如何在nodejs中创建唯一的URL

时间:2018-04-23 10:07:08

标签: node.js security

我正在尝试创建一个通过电子邮件发送给用户的唯一网址,一旦点击它们就会生成一个唯一的页面,用户可以在其中创建帐户。

该URL应该是唯一的,并且可以以简洁的方式移植用户将要创建的帐户的一些数据,如带有前缀的电子邮件地址或任何其他字段。

我不知道这些URL的确切名称,但我看到它被谷歌使用,我想在我的基于nodeJS的平台上实现这个想法,那我该怎么做呢?

2 个答案:

答案 0 :(得分:2)

您可以使用Node.js的本机加密。

const crypto = require('crypto');

crypto.randomBytes(64, (err, buf) => {
    if (err) throw err;
    console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`);
});

此处有更多信息:https://nodejs.org/api/crypto.html#crypto_crypto_randombytes_size_callback

我曾经做过的,我将生成的随机字符串保存到用户表中。 当用户点击链接时,我将检查URL上的字符串是否与数据库中的字符串匹配。如果匹配,用户可以继续编辑他的信息(或做任何你允许他/她做的事情)。

验证令牌后,您应将其从数据库中删除。出于安全目的,该链接仅应使用一次。

答案 1 :(得分:0)

难道你不能把用户ID或随机guid放在网址中吗? 这样你也可以在db中查找用户。 UserId不会很安全。