使用Devise进行身份验证时可选密码

时间:2012-11-20 14:34:13

标签: ruby-on-rails ruby-on-rails-3 devise ruby-on-rails-3.2

如果我有一个rails应用程序并且我想要使用Devise添加身份验证,那么我如何允许在数据库中拥有空密码的用户在没有密码的情况下登录?

我有兴趣听听生命周期中的答案以及我必须创作的文件才能完成。

2 个答案:

答案 0 :(得分:1)

步骤1:允许保存记录 第2步:登录记录

要允许保存记录,您需要自己进行验证。我在这里描述了如何进行自定义验证: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

答案 1 :(得分:0)

事实证明,Devise建立在Warden之上。这意味着我只需要创建自己的自定义Warden策略:

https://github.com/hassox/warden/wiki/Strategies