【发布时间】:2015-10-27 14:56:41
【问题描述】:
我目前正在使用 node.js 授权用户使用 JSON Web 令牌,并使用 EJS 作为视图引擎进行表达。
在我的 server.js 文件中使用简单的中间件:
app.use(function(request, response, next){
var token = request.body.token || request.query.token || request.headers['x-access-token'];
console.log(request.body);
if(token){
jwt.verify(token, app.get('superSecret'), function(err, decoded){
if(err){
response.json({"message": "Failed to authenticate user"});
}
else{
request.decoded = decoded;
next();
}
});
}
else{
return response.status(403).json({"message":"No token was provided"});
}
});
以及它下面的受保护路线,例如:
app.post('/userlist', function(request, response) {
response.json({some: json})
});
我无法理解或弄清楚如何保护 GET 路由,例如:
app.get('/userprofile', function(request, response) {
response.render('pages/userprofile');
});
如果我通过某个 url 直接发出请求 www.example.com/userprofile 访问被拒绝,因为请求中没有包含令牌。
如果我通过 ajax 实现:
$.ajax({
type:"GET",
url:"https://www.example.com/userprofile",
headers:{"x-access-token": token },
success: function(result, success){
},
error: function (result, error){
}
});
响应没有被渲染,而是在结果对象中返回。我的电线在这里某处交叉。
【问题讨论】:
标签: javascript json node.js authentication