在我的项目中,用户将提供一个API密钥,我想将其与数据库中的密钥进行比较。服务器将拥有的唯一东西是在请求头中提供的纯文本密钥。在bcrypt中,我想在数据库中找到这个密钥来验证它。唯一的问题是数据库中的值被散列和加盐。bcrypt.compare()可以工作,但只有当我有类似用户的电子邮件的东西,专门在数据库中找到一个文档,我可以比较的关键。循环遍历每个文档并比较密钥是我唯一的选择吗?还是有更有效的方法?
bcrypt.compare()
j13ufse21#
通常,您还将发送某种类型的客户端id(而不仅仅是API键),以了解要检查哪个键。通过许多关键将是非常缓慢的,这是一种点。存储更多的信息(比如某种查找)会削弱您的实现,您可能不应该这样做。在通常的设计中,你只需要一个用户名或客户端ID或任何你称之为的东西。
1条答案
按热度按时间j13ufse21#
通常,您还将发送某种类型的客户端id(而不仅仅是API键),以了解要检查哪个键。
通过许多关键将是非常缓慢的,这是一种点。存储更多的信息(比如某种查找)会削弱您的实现,您可能不应该这样做。在通常的设计中,你只需要一个用户名或客户端ID或任何你称之为的东西。