разработать собственную стратегию под названием только один раз - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть собственная стратегия разработки следующим образом

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

Любая помощь будет оценена. Спасибо.

...