2013-04-08 64 views
1

我必须重新从bcrypt生成的哈希密码......获得散列的NodeJS

hash = $2a$11$Ro/Y5GnkI6v1DkewwZAcBeZY7Q2a9872NUGDuXXes4J5SWfEQGHvG 

问题是,散列我的路由器有一个斜线...所以

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

我收到404错误!我认为这个问题是$ Ro和Y5G之间的斜线哈希 因为散列试图寻找这样一个URL

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

我怎样才能字符串化散... ???

回答

4

你想URL转义哈希。 JavaScript有这个encodeURIencodeURIComponent两个功能......你要后者,因为你只想编码它的一个部分,包括斜杠:

uri_safe_hash = encodeURIComponent(hash) 
1

使用encodeURIComponent到URI转义特殊字符,如/& ,和?。在这种情况下,您的哈希将被包裹,像这样:

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

在服务器端,它会自动重新转换逃脱参数,但你需要检查。

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; 
});