我通过将url路径中的随机字符串作为路由参数来实现重置密码。我后来在app.param中使用它。当随机字符串包含字符'/'时,app无法正常工作。以下是我的实施
在models / mymodelname.js
中resetId = crypto.randomBytes(16).toString('base64');
在routes / mymodelname.js
中app.post('/resetpassword/:resetId',users.resetPassword);
有什么方法可以使用我的resetId从随机字符串中获取用作路由参数吗?
答案 0 :(得分:1)
您可以通过以下几种方法解决此问题:
使用encodeURIComponent
功能将问题字符转换为%XX
表示形式:
resetId = crypto.randomBytes(16).toString('base64');
// ...
resetIdEscaped = encodeURIComponent(resetId);
// Example: L73jflJreR%2FuivSdnMU5%2Fg%3D%3D
将buffer转换为字符串时,请使用十六进制编码而不是base64编码:
resetId = crypto.randomBytes(16).toString('hex');
// Example: 13e095f8967a1ba06d11eeeed616051d