【发布时间】:2018-10-02 07:19:54
【问题描述】:
我正在尝试排除特定路由的 JWT 身份验证。我能够成功地将它排除在某些路线上,但不能排除在其他路线上。我在下面发布代码。
我不需要验证进入下面提到的路线,它工作正常。
app.post('/api/register*', function(request,response, next){
console.log("Entered register/user function");
registerProxy(request, response, next);
});
我需要验证才能进入下面提到的路线,它工作正常。
app.get('/api/users*', protected, function(request, response, next){
console.log('Entered userinfo function');
userInformationProxy(request,response,next);
});
以下是我的“受保护”功能
function protected(request, response, next) {
console.log('Entered function to strip jwt');
console.log(request.method, request.url);
const bearerHeader = request.headers['authorization'];
if(typeof bearerHeader !== 'undefined'){
console.log('JWT is present');
const bearer = bearerHeader.split(' ');
const bearerToken = bearer[1];
request.token = bearerToken;
jwt.verify(request.token, secretKey, function(error, authData){
if(error){
response
.status(403)
.json({'message': 'Forbidden'})
} else{
console.log(authData);
if(request.url.includes(authData.username)){
next();
} else{
response
.status(403)
.json({'message': 'Forbidden'})
}
}
});
} else {
response
.status(403)
.json({'message': 'Forbidden'})
}};
}
但是当我尝试进入下面提到的路线时遇到了问题:
app.get('/api/search', function(request, response, next){
console.log('Entered search function');
searchProxy(request, response,next);
});
虽然我没有使用“受保护”功能保护这条路线,但它给了我一个错误 403 禁止
我做错了吗?我是 Node.js 和 JWT 的新手
【问题讨论】:
标签: node.js express routes authorization jwt