0
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)',任何解决方案......?

4

1 回答 1

2

您错过了这样一个事实,即在重定向匿名用户(具有虚假req.session.user值)后,最终将出现在相同的 ( /) 页面上 - 因此中间件将再次检查他们的身份redir......一次又一次......一次又一次。因此出现“太多重定向”错误。

常见的解决方案是将所有匿名者重定向到某个其他网关页面 - 并且该页面显然不应该检查session.user

于 2012-12-23T16:16:55.640 回答