我想創建一個自定義auth策略來訪問API。我遵循Devise ignoring custom strategy的示例代碼。設計忽略我的自定義策略
問題是,有效的?我的Api策略中的方法永遠不會運行(基於嘗試撬動它)。
我的代碼:
module Devise
module Strategies
class Api < Devise::Strategies::Base
def valid?
binding.pry
params[:request_source] == 'api'
end
def authenticate!
#do stuff here
if user
success!(user)
else
warden.custom_failure!
render :json=> {:success=>false, :message=>"Error with your login or password"}, :status=>401
end
end
end
Warden::Strategies.add(:api, Devise::Strategies::Api)
end
end
,並在色器件初始化:
config.warden do |manager|
manager.default_strategies.unshift :api
end
我做什麼都,好像總是設計使用其默認的策略。據我所知,這應該是足夠了...
------- --------編輯
我需要這樣的戰略在我色器件初始化的頂部:
require Rails.root.join('app/devise/strategies/api')
我知道這個策略是在啓動時加載的,因爲如果我在類中放置了一個pry調用,它將啓動一個pry會話。但這些方法中的Pry調用永遠不會運行。 :-S
我在設計初始化程序的頂部有這條線:require Rails.root.join('app/devise /策略/ api'),如果我在策略中添加一個pry調用,它會在rails應用程序啓動時加載。但所有撬電話,我有有效的內部?方法永遠不會被調用。 – Alain 2012-08-22 15:34:38