【问题标题】:Express.js ERR_TOO_MANY_REDIRECTS errorExpress.js ERR_TOO_MANY_REDIRECTS 错误
【发布时间】:2015-11-16 01:56:51
【问题描述】:

这是场景。

如果用户想查看需要用户访问的页面,我想将他重定向到主页,但是当我尝试访问主页时出现 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');
};

【问题讨论】:

  • 您正在通过要求对根路由进行身份验证来创建重定向循环。也许将您的重定向更改为本地主机上的根路由以外的其他内容。

标签: node.js express


【解决方案1】:

问题是,一旦身份验证失败,您将重定向回同一页面,因此您的 ensureAuthenticated 中间件再次运行并再次重定向。

尝试创建一个经过身份验证的路由和一个未经身份验证的路由。

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

现在,如果您在访问 /private 时身份验证失败,它将重定向到 / ,这将显示给未经身份验证的用户。

【讨论】:

    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2020-08-04
    • 1970-01-01
    • 2014-08-19
    • 2021-08-24
    相关资源
    最近更新 更多