您可以使用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密钥并将其存储在数据库中。
data = req.body.email+req.body.username;
let apiKey = Buffer.from(data).toString('base64')
Run Code Online (Sandbox Code Playgroud)
使用此 API 密钥更新该用户的数据库列,用户可以使用该 API 密钥访问您的服务器端点。