Express.js ERR_TOO_MANY_REDIRECTS错误

这是场景。

如果用户想要查看需要用户访问的页面,我想将其redirect到主页,但是当我尝试访问主页时,出现ERR_TOO_MANY_REDIRECTS错误。

我无法弄清楚如何解决这个问题。

app.js

exports.ensureAuthenticated = function (req, res, next) { jwt.verify(req.cookies.userToken, "NICETRY", function (err, decoded) { if (err) { res.redirect("http://localhost:4000"); } else { // no err if (decoded.id) { req.id = decoded.id; req.iat = decoded.iat; next(); } else { res.send("invalid cookie"); } } }); }; 

路由/前端/ index.js

 var express = require('express'); var router = express.Router(); var indexController = require('../../controllers/frontend/indexController'); var auth = require('../../app').ensureAuthenticated; router.get('/', auth, indexController.index); module.exports = router; 

indexController.js

 exports.index = function (req, res) { res.render('frontend/home/index'); }; 

问题是,一旦validation失败,因此您的ensureAuthenticated中间件再次运行,并再次redirect您要redirect回到同一页。

尝试做一个authentication的路线和一个未经authentication的路线。

 router.get('/', indexController.index); // no auth necessary router.get('/private', auth, indexController.private); // requires auth 

现在,如果在访问/ private时auth失败,它将redirect到/将显示给未经身份validation的用户。