这是场景.
如果用户想要查看需要用户访问的页面,我想将其重定向到主页,但是当我尝试访问主页时,我收到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");
}
}
});
};
Run Code Online (Sandbox Code Playgroud)
路由/前端/ 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;
Run Code Online (Sandbox Code Playgroud)
indexController.js
exports.index = function (req, res) {
res.render('frontend/home/index');
};
Run Code Online (Sandbox Code Playgroud)
小智 5
问题是,一旦身份验证失败,您将重定向回到同一页面,因此您的ensureAuthenticated中间件会再次运行并重新定向.
尝试制作一条经过身份验证的路由和一条未经身份验证的路由.
router.get('/', indexController.index); // no auth necessary
router.get('/private', auth, indexController.private); // requires auth
Run Code Online (Sandbox Code Playgroud)
现在,如果您在访问/ private时验证失败,它将重定向到/将显示给未经身份验证的用户.
| 归档时间: |
|
| 查看次数: |
3518 次 |
| 最近记录: |