设计仅调用一次的自定义策略

时间:2019-04-02 17:11:09

标签: ruby-on-rails ruby devise ruby-on-rails-5

我有如下自定义设计策略

  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,但是自定义策略并不总是运行。

任何帮助将不胜感激。谢谢。

0 个答案:

没有答案
相关问题