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