0

我正在使用设计令牌身份验证,并且正在设置密码重置过程。当我单击电子邮件中的重置链接时,它具有 url 参数reset_password_token=hK3yxC1zVZCbWL8WgqKM,但在 rails 控制台中时我会这样做

2.5.1 :004 > User.first.reset_password_token
  User Load (0.6ms)  SELECT  "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1  [["LIMIT", 1]]
 => "ab432079e4e8aacfa0ecb5df17a7cea169990b0e0809ea9553248064220471a7" 

这些令牌不匹配,但它们应该匹配。它是否以某种方式编码,如果是这样,我怎样才能找到拥有令牌的用户?

4

1 回答 1

1

存储在数据库中的是Digest::SHA256.

token = "hK3yxC1zVZCbWL8WgqKM"
Digest::SHA256.hexdigest token
#⇒ "ae74625ac2357c8f2de0f3f52647aaee191dbba5d383f8ec5822cfec5c24384e"

显然无法将其还原为令牌,只能hexdigest将来自用户的令牌与存储在数据库中的令牌进行比较。

于 2019-03-17T06:39:31.110 回答