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