0

我有一个使用 brcypt gem 加密的用户模型。

但是,当我使用以下代码时,它会返回 false 作为结果。

User.find(117).try(:authenticate ,User.find(117).password_digest)

但下面提到的命令工作正常:

User.find(117).try(:authenticate ,"password")

它返回真。

那么当我需要验证已经存储在数据库中的密码时,如何实现第一个条件。

任何帮助,将不胜感激!!

4

2 回答 2

1

请尝试以下方法:

User.find(117).try(:authenticate ,User.find(117).password)

您永远不会直接在用户上调用 password_digest。

password_digest仅在设置数据库中的字段和视图中表单上的类型时使用。

对于所有其他目的,调用用户的“.password”属性。

于 2021-12-15T18:37:15.917 回答
0

在您的第一行中,您传递了摘要密码,该密码(取决于您的实现或您使用的 gem)应该是原始密码的单向加密字符串。如果没有原始密码,您将无法验证此摘要。

虽然try是一件很棒的事情,但它隐藏了您可能遇到的所有有用错误。如果您分开查找用户和验证密码,您的代码会更好。

于 2018-05-28T10:56:19.703 回答