【发布时间】:2012-08-17 16:55:29
【问题描述】:
我想创建一个自定义身份验证策略来访问 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
无论我做什么,Devise 似乎总是使用它的默认策略。 AFAIK,这应该足够了......
-------编辑--------
我需要在我的设计初始化程序的最顶部使用这样的策略:
require Rails.root.join('app/devise/strategies/api')
我知道策略是在启动时加载的,因为如果我在类中调用 pry ,它将启动一个 pry 会话。但是方法中的 Pry 调用永远不会运行。 :-S
【问题讨论】:
标签: ruby-on-rails devise warden