Express.js ERR_TOO_MANY_REDIRECTS错误 [英] Express.js ERR_TOO_MANY_REDIRECTS error

查看:53
本文介绍了Express.js ERR_TOO_MANY_REDIRECTS错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是场景.

如果用户想查看需要用户访问权限的页面,我想将他重定向到主页,但是在尝试访问主页时出现ERR_TOO_MANY_REDIRECTS错误.

If a user wants to see a page that requires user access, I want to redirect him to the homepage, but I get ERR_TOO_MANY_REDIRECTS error when I try to access the homepage.

我不知道该怎么解决.

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");
            }
        }
    });
};

routes/frontend/index.js

routes/frontend/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

indexController.js

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

推荐答案

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

The issue is that you're redirecting back to the same page once authentication fails and so your ensureAuthenticated middleware runs again and redirects again.

尝试建立一条经过身份验证的路由和一条未经身份验证的路由.

Try making one authenticated route and one unauthenticated route.

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

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

Now if you fail auth when you visit /private it will redirect to / which will display to the unauthenticated user.

这篇关于Express.js ERR_TOO_MANY_REDIRECTS错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆