【发布时间】:2016-08-24 18:00:22
【问题描述】:
我正在从 PHP 迁移到 NodeJS,我试图了解为什么中间件重定向会失控。
// Check to see if the request includes a session Username
app.use(function (req, res, next) {
sessionmanager = req.session;
if(sessionmanager.Username) {
console.log('Session Details detected');
next();
} else {
console.log('No session details detected, pushing user to login page');
res.redirect('/login');
}
});
// User Landing Page
app.get('/', function (req, res) {
console.log('Request for landing page');
res.send('Welcome Page!');
});
// User Login Page
app.get('/login', function (req, res) {
console.log('Request for User login page');
res.sendFile(path.join(__dirname, './public', 'login.html'));
});
当我访问 localhost:3000 时,它会将我重定向到 localhost:3000/login 但页面无法加载,因为它看起来被重定向了太多次。 当我查看控制台日志时,我可以数数; 20 多行消息“未检测到会话详细信息,将用户推送到登录页面”。
据我猜测,重定向循环回 app.use 函数,未能通过 session manager.Username 语句并陷入循环。 将流量重定向到 /login 页面的最佳方式是什么?我可以在 app.use 中加入 exclude 子句吗?
【问题讨论】: