如何在设备上执行密码复杂性验证而无需安装其他宝石?

时间:2017-07-27 20:46:10

标签: ruby-on-rails authentication devise

我在rails应用程序中使用devise进行身份验证。我想为一些密码复杂性规则添加验证。看来,在对模型进行哈希处理之前,我无法访问模型级别的原始密码。因此,我无法验证提供的原始密码是否符合我设置的密码复杂性规则。我能做到的唯一其他方法是在控制器级别。但是,我担心这种方法会污染我的控制器。关于如何在不安装任何其他宝石的情况下执行验证的任何想法?

2 个答案:

答案 0 :(得分:0)

这是在模型级别添加密码强度/复杂性要求的简单方法。

#app/models/user.rb

validate :password_complexity

def password_complexity
  if password.present?
     if !password.match(/^(?=.*[a-z])(?=.*[A-Z])/) 
       errors.add :password, "Password complexity requirement not met"
     end
  end
end

答案 1 :(得分:0)

创建不带其他gem的复杂密码的最佳选项,它也适用于rails 6.0.3.2 ruby​​ 2.7.1 https://github.com/heartcombo/devise/wiki/How-To:-Set-up-simple-password-complexity-requirements