我有如下自定义设计策略
config.warden do |manager|
manager.strategies.add :ts, Devise::Strategies::AuthJWT
manager.default_strategies(scope: :user).unshift :ts
end
,自定义策略如下
module Devise
module Strategies
class AuthJWT < Base
def authenticate!
data = JWT.decode(cookies.signed[:cookie_name], Rails.application.secrets.secret_key_base).first
success! User.where(uid: data['user_id']).first
rescue JWT::ExpiredSignature
fail! 'Auth token had expired'
rescue JWT::DecodeError
fail! 'Auth token is invalid'
rescue
fail!
end
end
end
end
问题是authenticate!
仅被调用一次。我一直希望始终调用身份验证,同时也检查了文档并删除了valid?
方法。但是authenticate!
仍仅在登录期间被调用一次。
我的控制器中有before_action :authenticate_user
,但是自定义策略并不总是运行。
任何帮助将不胜感激。谢谢。