我的设置:Rails 3.0.9、Ruby 1.9.2、Devise 1.3.4、Warden 1.0.4
我试图弄清楚是否可以对自定义策略进行身份验证,而不必在成功身份验证后在此过程中创建设计用户。在我的 config.warden 块中,身份验证工作正常,但如果我不创建设计用户,我将不会通过身份验证。我的理想方案要求我成功地通过第 3 方提供商的身份验证并登录我的应用程序(使用没有相应的 Devise 用户记录的 Devise),或者如果我未能通过身份验证,则尝试使用 Devise 标准登录路径。
这是我开始工作的 devise.rb 代码片段,但我必须创建一个设计用户才能进行身份验证,这是我希望避免的事情
config.warden do |manager|
manager.strategies.add(:custom_strategy) do
def valid?
params[:user] && params[:user][:email] && params[:user][:password]
end
def authenticate!
...perform authentication against 3rd party provider...
if successful_authentication
u = User.find_or_initialize_by_email(params[:user][:email])
if u.new_record?
u.app = 'blah'
u.save
end
success!(u)
end
end
end
manager.default_strategies(:scope => :user).unshift :custom_strategy
end