は、私が存在しないかではないトークンをチェックするためのモデル認証を発生Ruby On Railsでトークンをデータベースに格納する必要がありますか?
、ユーザのログインシステムを構築するために宝石jwt
、devise
を使用しています。
このコードは、次のとおりです。
モデル/ authentication.rb私はuser/sessions
にPOSTリクエストを行うときに、私はトークンを取得します
class Authentication < ApplicationRecord
def self.generate_access_token(email)
payload = {:email => email}
secret = 'secret'
token = JWT.encode payload, secret, 'HS256'
return token
end
end
コントローラ/ユーザー/ sessions_controller.rb
def create
user = User.where(email: params[:email]).first
if user&.valid_password?(params[:password])
@token = Authentication.generate_access_token(user.email)
Authentication.create(access_token: @token)
authentications = {token: @token, email: user.email}
render json: authentications, status: :created
else
head(:unauthorized)
end
end
をユーザーの電子メールとクライアントのlocalstorageに格納し、トークンが有効であることを確認する手助けをします。トークンデータベースに格納する必要がありませんようにする方法があり、私の質問に
def authenticate_token
token = Authentication.find_by_access_token(params[:token])
head :unauthorized unless token
end
:
は、このコードに従ってください?
ありがとう、それは仕事です –