您好我的网址以/ getSystemInfo 1st开头,检查是否已登录,是否有有效许可证。如果没有许可证,将重定向到askForLicense页面,但此重定向不起作用。
app.get('/getSystemInfo', isAuthenticated, hasLicense, function(req, res)
{
logger.debug('querying iStar status');
...
}
var isAuthenticated = function(req, res, next)
{
if( req.isAuthenticated() ) {
console.log("Very good, you are logged in ...");
return next();
} else {
console.log("Sorry, you are NOT logged in yet ...");
res.send(401);
}
}
var hasLicense = function(req, res, next)
{
// queryLicense.py will return error is no license
var getLicense = exec('queryLicense.py',
function (error, stdout, stderr) {
if (error !== null) {
console.log('License exec error: ' + error);
res.redirect('/askForLicense');
} else {
console.log("---- good, you have license ----\n");
return next();
}
}
);
};
app.get('/askForLicense', function(req, res)
{
console.log("---- Notice: need license ----");
res.sendfile(path.resolve('../client/askForLicense.html'));
});
控制台输出如下:
非常好,您已登录...
许可证执行错误:错误:命令失败:/ bin / sh -c getLicense.py
但我没有看到登录/ askForLicense,为什么? 非常感谢!
答案 0 :(得分:0)
您的中间件功能按此顺序调用,
/getSystemInfo, isAuthenticated, hasLicense, /askForLicense
由于您在中间件exec("getLicenese.py")
内调用hasLicense
并且它引发错误,因此调用无法到达下一个中间件/askForLicense