我正在Express中执行一些身份验证任务:
router.post(
'*',
expressJwt({
secret: config.SECRET,
getToken: function fromHeaderOrQuerystring(req) {
if (req.cookies.sessionUniversalCookie) {
return req.cookies.sessionUniversalCookie;
}
return null;
},
})
);
我想允许/api/login
,所以我希望此路由忽略此路径。这是我的尝试,但此方法不适用于api后调用。
router.post('*', (req, res, next) => {
if (req.baseUrl === '/api/login') {
return next();
}
expressJwt({
secret: config.SECRET,
getToken: function fromHeaderOrQuerystring(req) {
if (req.cookies.sessionUniversalCookie) {
return req.cookies.sessionUniversalCookie;
}
return null;
},
});
});
一个好的选择是匹配正则表达式中除api/login
以外的所有路由。我该怎么办?
答案 0 :(得分:0)
根据第二个代码,如果路由路径为'/ api / login',则要将路由传递到下一部分。 除了'/ api / login',其他路由将处理jwt身份验证。
router.post('/api/login', (req, res, next) => {
return next();
});
router.post('*', (req, res, next) => {
expressJwt({
secret: config.SECRET,
getToken: function fromHeaderOrQuerystring(req) {
if (req.cookies.sessionUniversalCookie) {
return req.cookies.sessionUniversalCookie;
}
return null;
},
});
});
因此,如果路由为“ / api / login”,则上面的代码会将路由传递到下一部分。
在其他情况下,路由将直接转到jwt部分。