如何根据数据库中用户的不同参数为nodejs应用程序的用户生成API密钥,以访问我们的服务器端点。
azpvetkf1#
您可以使用randomUUID,它是节点的加密模块的一部分。然后,您可以获取生成的uuid,使用bcrypt对其进行散列,并将其存储在db中。
const saltRounds = 10; const token = crypto.randomUUID(); const hashedToken = await bcrypt.hash(token, saltRounds);
在随后的请求中,您可以像这样验证它:
const token = req.body.token // this is an example bcrypt.compare(token, hashedToken, function(err, result) { // result == true });
您还可以存储创建日期,并使用它来使令牌失效,如果它们已经过了一定的时间。哈希令牌保护它,以防恶意用户/黑客能够访问数据库。您可以将此解决方案与时间和范围限制相结合,然后您将拥有一个非常可靠的解决方案。
a6b3iqyw2#
当我们谈论生成API密钥时,我总是倾向于使用uuid或crypto库。要保护密钥,请在将密钥保存到数据库之前对其进行加密。要加密密钥,您可以使用Google的密钥管理服务(KMS)和JWT,但我更喜欢使用KMS。
efzxgjgh3#
您可以使用不同的参数来生成API密钥并将其存储在数据库中以供不同的用户使用。
1.数据库中有用户的***用户名***和***邮箱***。1.将两者相加以生成一个新字符串并将其存储在变量中1.然后转换为***Base64***,存储在你的数据库中用户的apiKey列。
data = req.body.email+req.body.username; let apiKey = Buffer.from(data).toString('base64')
使用此API密钥更新该用户的数据库列,用户可以使用该API密钥访问您的服务器端点。
3条答案
按热度按时间azpvetkf1#
您可以使用randomUUID,它是节点的加密模块的一部分。然后,您可以获取生成的uuid,使用bcrypt对其进行散列,并将其存储在db中。
在随后的请求中,您可以像这样验证它:
您还可以存储创建日期,并使用它来使令牌失效,如果它们已经过了一定的时间。
哈希令牌保护它,以防恶意用户/黑客能够访问数据库。您可以将此解决方案与时间和范围限制相结合,然后您将拥有一个非常可靠的解决方案。
a6b3iqyw2#
当我们谈论生成API密钥时,我总是倾向于使用uuid或crypto库。要保护密钥,请在将密钥保存到数据库之前对其进行加密。要加密密钥,您可以使用Google的密钥管理服务(KMS)和JWT,但我更喜欢使用KMS。
efzxgjgh3#
您可以使用不同的参数来生成API密钥并将其存储在数据库中以供不同的用户使用。
示例:
1.数据库中有用户的***用户名***和***邮箱***。
1.将两者相加以生成一个新字符串并将其存储在变量中
1.然后转换为***Base64***,存储在你的数据库中用户的apiKey列。
代码
使用此API密钥更新该用户的数据库列,用户可以使用该API密钥访问您的服务器端点。