首页 > 解决方案 > 我需要在 node.js 中创建唯一 ID 而无需注册

问题描述

当用户未登录或注册时,我需要在 node.js 中接收唯一 ID。我使用的request-ip包也使用过req.headers['x-forwarded-for']req.connection.remoteAddress 但是这些命令中的 IP 因 Internet 而异,并且不是每个浏览器唯一的

标签: javascriptnode.jsunique-id

解决方案


您可以为您的应用程序创建一个中间件。在此中间件中,检查用户是否未登录并且请求不包含某些特殊标头(例如["first-token"]),然后创建一个大的随机字符串:

const token = crypto.randomBytes(64).toString('hex');

并将其发送给您的客户。例如:

res.json({firstToken: token, /*Other fields you may need to send*/});

然后在您的客户端将其存储在 cookie 或本地存储中。
曲奇饼:

document.cookie = document.cookie + "; firstToken=" + firstToken

本地存储:

localStorage.setItem("firstToken", firstToken);

之后,您应该在发送到服务器的每个请求中发送此 cookie。在此示例中的["first-token"]标题中。

通过这种方式,您可以为用户分配一个唯一的随机字符串,并且在他们清除浏览器数据之前不要更改它。


推荐阅读