我正在尝试创建一个通过电子邮件发送给用户的唯一网址,一旦点击它们就会生成一个唯一的页面,用户可以在其中创建帐户。
该URL应该是唯一的,并且可以以简洁的方式移植用户将要创建的帐户的一些数据,如带有前缀的电子邮件地址或任何其他字段。
我不知道这些URL的确切名称,但我看到它被谷歌使用,我想在我的基于nodeJS的平台上实现这个想法,那我该怎么做呢?
答案 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不会很安全。