首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最少6个字符的密码不起作用[rails 4]

最少6个字符的密码不起作用[rails 4]
EN

Stack Overflow用户
提问于 2014-01-23 11:58:53
回答 2查看 1.1K关注 0票数 2

我正在阅读用rails 4开发敏捷web的书。

在用户模型中,密码验证不能少于6个字符。

代码语言:javascript
复制
validates :password_digest, length: {minimum: 6}

但是实际上,当我创建一个新的用户时,它允许我用不到6来做它。有什么建议吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-23 12:46:39

短一点-你在验证错误的字段。将:password_digest替换为:password。

代码语言:javascript
复制
validates :password, length: { minimum: 6 }

稍长一点的解释:我打开了一本书,看了第14章(名为“任务I:登录”)。看起来您的users表中有'name‘、'password_digest’和'salt‘列。书中的示例描述了如何散列密码,如何将其与salt混合,并将结果存储在数据库中。关键是-你的'password_digest‘将足够长,即使你产生这个字母。你可以在irb里自己试试:

代码语言:javascript
复制
require 'digest'
Digest::SHA2.hexdigest('a') #=> "ca978112ca1bbdcafac231b39a2..."

因此,您不应该验证哈希密码的长度。相反,您应该验证“密码”属性本身。

票数 3
EN

Stack Overflow用户

发布于 2014-01-23 12:41:11

加密

你在验证password_digest -这表明是加密密码?

如注释中所述,除非表单输入将被称为password_digest,否则在执行验证之前可能会对其进行散列,使此值始终超过6个字符

解决这个问题的直接方法(虽然我不确定它是否完全正确)是验证“裸”密码。这将验证输入的密码,而不是散列版本:

代码语言:javascript
复制
#app/models/user.rb
Class User < ActiveRecord::Base
     validates :password, length: {minimum: 6}
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21307515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档