我通过将 url 路径中的随机字符串作为路由参数来实现重置密码。我稍后在 app.param 中使用它。当随机字符串包含字符“/”时,应用程序无法正常工作。以下是我的实现
在模型/mymodelname.js 中
resetId = crypto.randomBytes(16).toString('base64');
在 routes/mymodelname.js 中
app.post('/resetpassword/:resetId',users.resetPassword);
有什么方法可以使用从随机字符串中获取的 resetId 用作路由参数吗?
最佳答案
这里有几种方法可以解决这个问题:
使用
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
关于javascript - 如何使用随机字符串作为路由参数(ExpressJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482033/