在 Node js 应用程序中为用户生成唯一的 api 密钥以访问您的 api

Par*_*dar 9 database api api-key node.js server

如何根据数据库中用户的不同参数为 Nodejs 应用程序的用户生成 API 密钥,以便访问我们的服务器端点。

Har*_*del 7

您可以使用randomUUID,它是节点加密模块的一部分。然后,您可以获取生成的 uuid,使用bcrypt对其进行哈希处理并将其存储在数据库中。

const saltRounds = 10;
const token = crypto.randomUUID();
const hashedToken = await bcrypt.hash(token, saltRounds);
Run Code Online (Sandbox Code Playgroud)

在后续请求中,您可以像这样验证它:

const token = req.body.token // this is an example
bcrypt.compare(token, hashedToken, function(err, result) {
    // result == true
});
Run Code Online (Sandbox Code Playgroud)

您还可以存储创建日期,并在令牌过了一定时间后使用它使令牌失效。

对令牌进行哈希处理可以保护它,以防恶意用户/黑客能够访问数据库。您可以将此解决方案与时间和范围限制结合起来,然后您就会得到一个非常可靠的解决方案。


Par*_*dar -16

您可以使用不同的参数为不同的用户生成API密钥并将其存储在数据库中。

例子 :

  1. 您在数据库中有用户的用户电子邮件。
  2. 添加它们以创建一个新字符串并将其存储在变量中
  3. 然后将其转换为Base64并将其存储在数据库中用户的 apiKey 列中。

代码

data = req.body.email+req.body.username;
let apiKey = Buffer.from(data).toString('base64')
Run Code Online (Sandbox Code Playgroud)

使用此 API 密钥更新该用户的数据库列,用户可以使用该 API 密钥访问您的服务器端点。

  • 这是非常可预测的,请不要使用它。 (7认同)