NodeJS 如果你只有一个API密钥,我如何用bcrypt验证它?

k3fezbri  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(111)

在我的项目中,用户将提供一个API密钥,我想将其与数据库中的密钥进行比较。服务器将拥有的唯一东西是在请求头中提供的纯文本密钥。
在bcrypt中,我想在数据库中找到这个密钥来验证它。唯一的问题是数据库中的值被散列和加盐。bcrypt.compare()可以工作,但只有当我有类似用户的电子邮件的东西,专门在数据库中找到一个文档,我可以比较的关键。
循环遍历每个文档并比较密钥是我唯一的选择吗?还是有更有效的方法?

j13ufse2

j13ufse21#

通常,您还将发送某种类型的客户端id(而不仅仅是API键),以了解要检查哪个键。
通过许多关键将是非常缓慢的,这是一种点。存储更多的信息(比如某种查找)会削弱您的实现,您可能不应该这样做。在通常的设计中,你只需要一个用户名或客户端ID或任何你称之为的东西。

相关问题