2015-11-16 2 views
2

Вот сценарий.Ошибка Express.js ERR_TOO_MANY_REDIRECTS

Если пользователь хочет увидеть страницу, требующую доступа пользователя, я хочу перенаправить его на домашнюю страницу, но при попытке доступа к домашней странице я получаю ошибку 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"); 
      } 
     } 
    }); 
}; 

маршруты/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

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

Вы создаете цикл перенаправления, требуя аутентификации для корневого маршрута. Возможно, измените перенаправление на что-то другое, кроме корневого маршрута на localhost. –

ответ

5

Вопрос заключается в том, что вы перенаправляет обратно в то же самое после того, как аутентификация завершается с ошибкой, и поэтому ваше обеспечение. Проверенное промежуточное программное обеспечение снова запускается и перенаправляется снова.

Попробуйте сделать один аутентифицированный маршрут и один маршрут, не прошедший проверку.

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

Теперь, если вы не авторизацию, когда вы посещаете/частные он будет перенаправлять /, который будет отображаться на аутентифицировать пользователя.

Смежные вопросы