Techioz Blog

URLによる認証

概要

たとえば、投稿アプリを持っているとします。タイトル、テキスト、電子メール、送信ボタンなどのフィールドに誰でも入力できるフォームがあります。登録は必要ありません。

フォームの送信後、投稿は管理される必要があります。承認されるとメインリストに表示されます。

フォームの送信と承認後、ユーザーは投稿を編集するためのリンクを受け取ります (リンクはユーザーの電子メールに送信されます)。 - これを行う方法?

更新

問題は、投稿/ユーザーを管理または検証する方法ではなく、投稿のみを編集するためのリンクをどのように与えるかです。

解決策

ユーザー レコードが作成されるたびに、次のようにレコードにバインドされたトークンを簡単に生成できます。

User.rb内

before_save :generate_token

def generate_token
  self.token = SecureRandom.hex(6)
end

ユーザーに登録確認リンクを送信するときは、次のようにすることができます。

link_to "Validate account", validate_user_path(token: user.token)

UsersController の例

def validate
  user = User.find_by_token(params[:token])
  if user
    user.update_attributes(validated: true)
    flash[:notice] = 'User succesfully validated.'
  else
    flash[:error] = 'Couldn't find user with token'
  end
end