【问题标题】:Optional password during authentication with Devise使用 Devise 进行身份验证期间的可选密码
【发布时间】:2012-11-20 14:34:13
【问题描述】:

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

我很想听听关于生命周期的答案以及我必须编写哪些文件才能完成它。

【问题讨论】:

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


    【解决方案1】:

    第 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
    

    【讨论】:

    • 谢谢!我今晚会试试这个。如果您想到我可能需要注意的其他任何事情,请随时发表评论/更新。 :)
    • 我可能宁愿只是通过电子邮件向他们发送一个登录链接,而不是签署知道像电子邮件地址这样公开的内容。
    • 嗯,它不一定是电子邮件地址。这是一个内部网式的解决方案。访问将在其他方面受到限制。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-28
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多