【发布时间】:2011-07-12 04:24:51
【问题描述】:
我的设置:Rails 3.0.9、Ruby 1.9.2、Devise 1.3.4、Warden 1.0.4
我正在尝试确定是否可以对自定义策略进行身份验证,并且在成功身份验证后不必在此过程中创建设计用户。在我的 config.warden 块中,身份验证工作正常,但如果我不创建设计用户,我将不会通过身份验证。我的理想方案要求我成功地通过第三方提供商进行身份验证并登录我的应用程序(使用没有相应 Devise 用户记录的 Devise),或者如果我未能通过身份验证,则尝试使用 Devise 标准登录路径。
这是我开始工作的 devise.rb 代码 sn-p 但我必须创建一个设计用户才能进行身份验证,这是我希望避免的事情
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
【问题讨论】:
-
我相信this tutorial 会有所帮助。
标签: ruby-on-rails authentication devise warden