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

时间:2014-05-05 21:15:14

标签: javascript node.js http express

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

在models / mymodelname.js

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

在routes / mymodelname.js

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

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

1 个答案:

答案 0 :(得分:1)

您可以通过以下几种方法解决此问题:

  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