gpt4 book ai didi

ruby-on-rails - 在 Rails 4 中禁用 has_secure_password password_confirmation 检查

转载 作者:行者123 更新时间:2023-12-04 06:10:26 26 4
gpt4 key购买 nike

我正在创建一个基本的 Ruby on Rails 4 项目,它允许用户创建帐户、登录等...我正在使用内置的 has_secure_password来管理密码。我不希望用户必须输入两次密码(即需要 password_confirmation 输入表单字段和相应的模型属性)。所以,我正在寻找一种方法来转动 password_confirmation检查/要求关闭。

我找到了 this answer这提供了一个潜在的解决方案,但原始问题足够不同,我想单独验证它。它建议更新用户模型以添加以下内容:

class User < ActiveRecord::Base

# ...

has_secure_password validations: false
validates :password, presence: true, length: { minimum: 6 }

end

这似乎有效并允许我的 RSpec 测试通过。我的两部分问题是:
  • 这种方法是否有任何负面后果或安全问题?
  • 是否有其他方法可以关闭 password_confirmation哪个更安全或更符合“The Ruby Way”?
  • 最佳答案

    ActiveModel::SecurePassword有一个 options 参数,您可以指定不执行验证。

    has_secure_password validations: false

    然后只需确保您手动对密码字段执行验证。
    validates_presence_of :password, on: :create

    可选地,如果 password_digest 以某种方式为空,则唯一缺少的另一件事是引发错误。我不知道这怎么会发生。
    before_create { raise "Password digest missing on new record" if password_digest.blank? }

    在我看来,这似乎尽可能干净地解决了这个问题。

    关于ruby-on-rails - 在 Rails 4 中禁用 has_secure_password password_confirmation 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601758/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com