2013-04-08 34 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; 
});