有效地将给定令牌与数据库中的散列,盐渍令牌进行比较
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有效地将给定令牌与数据库中的散列,盐渍令牌进行比较相关的知识,希望对你有一定的参考价值。
我正在使用令牌在我的应用程序中实现身份验证。
生成令牌时,实际令牌将发送到客户端以存储在cookie中,而散列令牌将与散列期间使用的salt一起保存在数据库中。
现在,为了验证用户,我必须将给定的令牌与数据库中保存的令牌进行比较,这似乎需要检查数据库中的每个条目,因为salt对于每个令牌都是唯一的。
重申一下,我必须做以下事情:
for saved_token in all_saved_tokens:
hashed_token = hash_token_with_salt(actual_hash_from_client, saved_token.salt)
if hashed_token == saved_token.hashed_token:
return saved_token.user
由于这需要在每次通话时发生,因此看起来非常低效。
所以问题是:
鉴于我存储有关令牌的信息,我可以以某种方式更有效地做到这一点吗?
我当然可以将用户的用户名存储在cookie中并将其与密码一起传递给密码,以便我可以缩小数据库中的搜索范围,但理想情况下我更愿意只使用令牌来保持整洁和整洁。 。
答案
为什么不将散列标记保存到db并在散列标记上添加索引,这样就不需要迭代了
以上是关于有效地将给定令牌与数据库中的散列,盐渍令牌进行比较的主要内容,如果未能解决你的问题,请参考以下文章