Express和中间件问题

时间:2012-12-23 16:11:14

标签: node.js redirect express middleware

function redit (req, res, next) {

 var session = req.session.user;

 if (session) {

    res.redirect('/home');

    next();

 }

 else {

    res.redirect('/');

    next();

 }

}

app.get('/', redit, function (req, res){

   res.render('home0.ejs');

}); 

我对此中间件进行编码以检查是否存在req.session.user,如果有,则将用户重定向到home,否则将重定向到/。但是当调用这个中间件时,Chrome会告诉我Error 310 (net::ERR_TOO_MANY_REDIRECTS)',任何解决方案......?

1 个答案:

答案 0 :(得分:2)

您错过了重定向后,匿名用户(带有虚假req.session.user值)会在同一页面(/)结束 - 所以他们的身份将由{{1}进行检查再次使用中间件......再次......因此,“太多的重定向”错误。

常见的解决方案是将所有匿名用户重定向到其他网关页面 - 该页面显然不应该检查redir