【发布时间】:2016-09-08 12:27:10
【问题描述】:
在我的 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。
你知道为什么我的登录页面被调用很多吗?
【问题讨论】:
-
req.isAuthenticated() 是否也需要'/login'?因为那是一个无限循环。
-
我编辑了我的问题。 /login 也不需要 req.authenticated。但我试图删除
if (req.isAuthenticated()) return next();进行测试。我只是让res.redirect('/login');和我有同样的错误 -
检查中间件,如果当前路径是
login,不要重定向。为了更好的情况,请在重定向后致电next -
@EbrahimPasbani 很好的解决方案,非常感谢。
-
酷,不客气
标签: javascript node.js redirect express