【发布时间】:2012-11-20 14:34:13
【问题描述】:
如果我有一个 Rails 应用程序并且我想使用 Devise 添加身份验证,我将如何允许数据库中密码为空的用户在没有密码的情况下登录?
我很想听听关于生命周期的答案以及我必须编写哪些文件才能完成它。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 devise ruby-on-rails-3.2
如果我有一个 Rails 应用程序并且我想使用 Devise 添加身份验证,我将如何允许数据库中密码为空的用户在没有密码的情况下登录?
我很想听听关于生命周期的答案以及我必须编写哪些文件才能完成它。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 devise ruby-on-rails-3.2
第 1 步:允许保存记录。
第二步:登录记录
要允许保存记录,您需要自己进行验证。我在这里描述了如何进行自定义验证:http://jessewolgamott.com/blog/2011/12/08/the-one-where-devise-validations-are-customized/ ...。在您的情况下,您需要删除密码验证。
要登录记录,您需要有一个自定义登录路径。您可以覆盖设计会话控制器,但这可以解决问题:
class SessionsController < ApplicationController
def create
user = User.find_by_email!(params[:session][:email])
sign_in user
redirect_to root_path
end
end
【讨论】:
事实证明,Devise 是建立在 Warden 之上的。这意味着我只需创建自己的自定义 Warden 策略:
【讨论】: