节点js使用中间件重定向重定向太多

时间:2016-09-08 12:27:10

标签: javascript node.js redirect express

在我的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

你知道为什么我的登录页面被调用很多吗?

1 个答案:

答案 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();
});