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

Javascript 如何使用随机字符串作为路由参数(ExpressJS),javascript,node.js,http,express,Javascript,Node.js,Http,Express,我通过将url路径中的随机字符串作为路由参数来实现重置密码。我后来在app.param中使用它。当随机字符串包含字符“/”时,应用程序无法正常工作。下面是我的实现 在models/mymodelname.js中 resetId = crypto.randomBytes(16).toString('base64'); app.post('/resetpassword/:resetId',users.resetPassword); 在routes/mymodelname.js中 resetId

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

在models/mymodelname.js中

resetId = crypto.randomBytes(16).toString('base64');
app.post('/resetpassword/:resetId',users.resetPassword);
在routes/mymodelname.js中

resetId = crypto.randomBytes(16).toString('base64');
app.post('/resetpassword/:resetId',users.resetPassword);

是否有任何方法可以使用从随机字符串获取的resetId作为路由参数?

以下是解决此问题的几种方法:

  • 使用该函数将问题字符转换为其
    %XX
    表示形式:

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

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