通过nodejs中的url获取哈希值

时间:2013-04-08 23:39:56

标签: javascript node.js express

我必须从bcrypt ...

生成的哈希重置密码
hash = $2a$11$Ro/Y5GnkI6v1DkewwZAcBeZY7Q2a9872NUGDuXXes4J5SWfEQGHvG

问题是哈希有一个斜杠......所以在我的路由器中

app.get('/getHash/:hash',routes.getResetHash);

我收到404错误!我认为问题是哈希中$ Ro和Y5G之间的斜线 因为哈希尝试搜索这样的网址

app.get('/getHash/$2a$11$Ro/Y5GnkI6v1DkewwZAcBeZY7Q2a9872NUGDuXXes4J5SWfEQGHvG'.....

我怎样才能将哈希字符串化...... ???

3 个答案:

答案 0 :(得分:4)

您希望URL转义哈希值。 Javascript有两个函数用于encodeURIencodeURIComponent ...你想要后者,因为你只想编码它的一部分,包括斜杠:

uri_safe_hash = encodeURIComponent(hash)

答案 1 :(得分:1)

使用encodeURIComponent URI转义特殊字符,例如/&?。在这种情况下,您的哈希将包含如下:

var hash = encodeURIComponent('$2a$11$Ro/Y...872NUGDuXXes4J5SWfEQGHvG');

在服务器端,它应该自动重新转换转义参数,但您需要检查。

答案 2 :(得分:1)

你可以这样做:

app.get('/getHash/:hash1/:hash2', routes.getResetHash);

然后在routes.getResetHash上,您可以加入hash1和hash2参数:

routes.getResetHash = function(req, res){
  var hash = req.params.hash1 + '/' + req.params.hash2;
});