2010-08-27 75 views
4

我試圖添加一個非常簡單的策略來設計,它似乎並沒有工作。下面是我想使用我如何添加策略設計

#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 

的代碼應該檢查PARAMS一個「AUTO_LOGIN」參數的代碼,如果存在的話,發現它可以在第一用戶在登錄他們。我已經跳過安全措施完全是爲了獲得一個基本的測試案例。當我嘗試登錄到具有before_filter authenticate_user!(即localhost:3000/test?auto_login=true)的控制器時,它無法登錄並將我重定向到登錄頁面。我究竟做錯了什麼?

回答

6

你可能想嘗試直接將它監獄長::策略:

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

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

我這樣做是前一段時間,但後來最終沒有需要它。如果我記得正確,請告訴我。

+0

另請參閱此處的答案:http://stackoverflow.com/questions/4223083/custom-authentication-strategy-for-devise – shawn42 2011-02-03 15:07:10