在我的Node.js应用程序中(我正在使用express 4.x)我想检查用户是否已登录。如果用户未登录,我想重定向到我的登录页面。然后我在这样的中间件中这样做:
Server.js
app.use(function (req, res, next) {
// if user is authenticated in the session, carry on
if (req.isAuthenticated())
return next();
// if they aren't redirect them to the home page
res.redirect('/login');
});
登录路线
// Login page
app.get('/login', function(req, res){
res.render('pages/login', {
error : req.flash('loginError'),
info : req.flash('info'),
success : req.flash('success')
});
});
但是当我在我的中间件中添加此代码时,登录页面被调用了30多次......我的浏览器显示Too many redirect
。
你知道为什么我的登录页面被调用很多吗?
答案 0 :(得分:2)
你陷入了无限循环,因为如果请求的路径是login
,那么即使再次重定向到login
app.use(function (req, res, next) {
// if user is authenticated in the session, carry on
if (req.isAuthenticated())
return next();
// if they aren't redirect them to the home page
if(req.route.path !== '/login')
res.redirect('/login');
next();
});