我必须从bcrypt ...
生成的哈希重置密码hash = $2a$11$Ro/Y5GnkI6v1DkewwZAcBeZY7Q2a9872NUGDuXXes4J5SWfEQGHvG
问题是哈希有一个斜杠......所以在我的路由器中
app.get('/getHash/:hash',routes.getResetHash);
我收到404错误!我认为问题是哈希中$ Ro和Y5G之间的斜线 因为哈希尝试搜索这样的网址
app.get('/getHash/$2a$11$Ro/Y5GnkI6v1DkewwZAcBeZY7Q2a9872NUGDuXXes4J5SWfEQGHvG'.....
我怎样才能将哈希字符串化...... ???
答案 0 :(得分:4)
您希望URL转义哈希值。 Javascript有两个函数用于encodeURI
和encodeURIComponent
...你想要后者,因为你只想编码它的一部分,包括斜杠:
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;
});