У меня есть собственная стратегия разработки следующим образом
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
в самом контроллере, но пользовательская стратегия не всегда работает.
Любая помощь будет оценена. Спасибо.