我正在为Rails应用编写一个非常简单的登录系统。我正在使用RESTful身份验证。这是一个相当传统的设置,我发送电子邮件和密码来验证用户。
在这里,我使用了REMEMBER ME?,如果同一用户再次想要使用cookie登录,用户可以重新登录。现在的情况是,我想在各自的文本框中打印电子邮件和密码。电子邮件已插入文本框,但我在文本字段中显示密码时遇到问题。
登录时,使用此类条件
@person.password_hash == BCrypt::Engine.hash_secret(@password, @person.password_salt)
如何以文本形式获取密码?
答案 0 :(得分:3)
[讽刺]如果你想以文本形式显示它们,为什么还要对它们进行哈希处理?[/ irony]
但要认真对待:哈希是单向操作,你不能还原它。 http://en.wikipedia.org/wiki/Hash_function
因此你无法显示用户密码(顺便说一下 - 你不应该这样做,这违反了安全原则)。
在编写“记住我”功能时,请查看设计方法:http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Rememberable如果您希望该功能真正安全,则需要进行一些编写工作。
答案 1 :(得分:0)
经过大量搜索网络后,我发现BCrypt::Engine.hash_secret
是密码的单向加密。这意味着没有办法扭转这一过程。因此,如果您尝试从BCrypt :: Engine.hash_secret创建密码文本,则无法执行此操作。