簡體   English   中英

如何為Devise添加策略

[英]How do I add a strategy to Devise

我正在嘗試添加一個非常簡單的策略來設計,但是它似乎沒有用。 這是我嘗試使用的代碼

#config/initializers/devise.rb
Devise.setup do |config|
  config.orm = :mongo_mapper

  config.warden do |manager|
    manager.strategies.add(:auto_login_strategy) do 
      def valid?
        params[:auto_login]
      end

      def authenticate!
        u = User.find(:first)
        u.nil? ? fail!("No created users") : success!(u)
      end
    end
    manager.default_strategies(:scope=>:user).unshift :auto_login_strategy
  end  
end

該代碼應該檢查“ auto_login”參數的參數,如果存在,請找到它可以登錄的第一個用戶,然后登錄。我完全跳過了安全措施,只是使一個基本的測試用例能夠正常工作。 當我嘗試登錄具有before_filter authenticate_user!的控制器時before_filter authenticate_user! (即localhost:3000/test?auto_login=true ),它無法登錄並重定向到登錄頁面。 我究竟做錯了什么?

您可能想嘗試將其直接添加到Warden :: Strategies:

class MyStrategy
  def valid?...
  def authenticate!...
end

Warden::Strategies.add(:database_authenticatable, MyStrategy)

我前一陣子做了,但是最終不需要了。 讓我知道我是否正確記得了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM