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