javascript - 如何使用随机字符串作为路由参数(ExpressJS)

标签 javascript node.js http express

我通过将 url 路径中的随机字符串作为路由参数来实现重置密码。我稍后在 app.param 中使用它。当随机字符串包含字符“/”时,应用程序无法正常工作。以下是我的实现

在模型/mymodelname.js 中

resetId = crypto.randomBytes(16).toString('base64');

在 routes/mymodelname.js 中

app.post('/resetpassword/:resetId',users.resetPassword);

有什么方法可以使用从随机字符串中获取的 resetId 用作路由参数吗?

最佳答案

这里有几种方法可以解决这个问题:

  1. 使用 encodeURIComponent将问题字符转换为它们的 %XX 表示的函数:

    resetId = crypto.randomBytes(16).toString('base64');
    // ...
    resetIdEscaped = encodeURIComponent(resetId);
    // Example: L73jflJreR%2FuivSdnMU5%2Fg%3D%3D
    
  2. 在转换 buffer 时使用十六进制编码而不是 base64 编码到一个字符串:

    resetId = crypto.randomBytes(16).toString('hex');
    // Example: 13e095f8967a1ba06d11eeeed616051d
    

关于javascript - 如何使用随机字符串作为路由参数(ExpressJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482033/

相关文章:

javascript - 如何使用 NUXT.js 为我的传单 map 设置自定义标记图标

amazon-web-services - AWS ELB 从 FaSTLy 健康检查中获得大量 404 错误

regex - 使用正则表达式的 Http 重定向 302

javascript - 使用 setInterval 刷新 Div 的 InnerText

javascript - React - 分段显示文本消息

node.js - 连续 "hot"部署有 Angular 的 Web 应用程序

node.js - match_phrase 不适用于 Elasticsearch 中的同义词标记过滤器(类型扩展)

javascript - 如何在 Nodejs 中正确从父目录导出和 require ?

http - Angular2 可观察的

javascript - 如何减小 Angular JS 应用程序的大小,其中 vendor .js 为 2MB,app.js 为 720KB?