【发布时间】:2012-09-27 22:32:37
【问题描述】:
我正在使用 node.bcrypt.js 哈希返回 node.js 中的十六进制数字作为密码重置令牌。
user.reset_password_token = require('crypto').randomBytes(32).toString('hex'
);
在将令牌传递到 url 之前,我是否也应该对令牌进行 base64 编码(即:链接重置电子邮件)?
这样做有什么好处吗?
我似乎记得 base64 编码可能包含会弄乱路径的正斜杠:
var token = user.reset_password_token;
//is there any benefit to doing base64 encoding?
var encoded_token = new Buffer(token).toString('base64');
var reset_link = 'http://example.com/reset/'+ encoded_token;
sendResetLink( reset_link );
【问题讨论】:
-
stackoverflow.com/questions/1374753/…(不,指出非 URL 安全字符),stackoverflow.com/questions/1228701/…(讨论修改版本)
-
这是我写的一个 old 答案for an alternative way to address this,它只需要一个简单的前置/后置替换步骤即可用于不需要非字母数字的变体 base64 转义编码ASCII 字符。