Ruby on Rails用户和密码验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby on Rails用户和密码验证相关的知识,希望对你有一定的参考价值。

我只使用bcrypt对用户名和密码的用户注册验证有特定要求(没有设计!)

我目前有工作:

validates :username,
          presence: true,
          length: { minimum: 2, maximum: 15 },
          uniqueness: true

validates :password, 
          presence: true,
          length: { minimum: 10 },

我需要:

  • 用户名: 只能包含字母,数字,短划线和下划线
  • 密码: 必须至少包含一个大写字母,一个特殊字符,一个数字和一个小写字母
答案

1.首先需要,您可以将其添加到您的用户名validates

format: { with: /A[w-]+z/, message: "your format requirements" }

2.为了您的第二个需求,我没有找到它的正则表达式,您可以尝试添加自定义验证。

首先将此验证方法添加到您的模型:

def check_password_format
  regexps = {" must contain at least one lowercase letter" => /[a-z]+/, 
             " must contain at least one uppercase letter" => /[A-Z]+/, 
             " must contain at least one digit" => /d+/, 
             " must contain at least one special character" => /[^A-Za-z0-9]+/}
  regexps.each do |rule, reg|
    errors.add(:password, rule) unless password.match(reg)
  end
end

然后在你的模型中写下这一行:

validate :check_password_format

因此,在您的表单页面中,通过对象的.errors属性,您可以向用户显示他们缺少的格式要求。

以上是关于Ruby on Rails用户和密码验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby on Rails 中使用 Devise 验证密码强度?

Ruby on Rails 中身份验证的最佳解决方案 [关闭]

Ruby on Rails 无需密码即可更新用户属性

如何配置 Devise for Ruby on Rails 以将电子邮件和密码存储在用户模型之外的其他位置?

遇到致命问题:使用 ruby​​ on rails 对用户“postgres”进行对等身份验证失败

在 PHP 中匹配 128 个字符的密码哈希 - 使用 Ruby on Rails 加密