2014-11-04 4 views
1

Я следующий кода для обработки signin запроса с использованием PassportJS для проверки подлинности/авторизации пользователя:PassportJS не пересылает после пользователь аутентифицирован

app.post('/signin', function(req, res, next) { 
    passport.authenticate('local-login', function(err, user, info) { 
     if (err) { 
      return next(err); 
     } 
     if (!user) { 
      return res.json(info); 
     } 
     req.logIn(user, function(err) { 
      if (err) { 
       return next(err); 
      } 
      res.redirect('/user'); //not redirecting to /user 
     }); 
    })(req, res, next); 
}); 

Но это не перенаправление /user, когда пользователь находится.

Может ли кто-нибудь помочь мне понять, почему это не перенаправляет?

ответ

0

Что произойдет, если вы выполните инструкцию console.log над вашей линией перенаправления? Выполняется ли этот код? Мне кажется, что ваш код никогда не попадает на вызов переадресации.

+0

Он записывается на консоль, когда я делаю это перед линией перенаправления. Я делаю перенаправление на данный момент из переднего конца, отправив json-ответ из вышеприведенной функции. – skip

+0

Вы используете угловой или что-то в этом роде? Или вы используете серверные представления? Если вы используете угловое или еще много чего, и у вас есть другой фрагмент кода, перехватывающий ваш запрос, тогда запрос не будет проходить, потому что вы должны прочитать его в своем интерфейсном коде и сделать там переадресацию. – rdegges

+0

@rdeggs: Я отправляю запрос с использованием службы '$ http' из' ejs', используя AngularJS. Я делаю это так: app.post ('/ signin', function (req, res, next) { passport.authenticate ('local-login', function (err, user, info) { if (err) {return next (err);} if (! user) {return res.json (info);} req.logIn (пользователь, функция (ошибка) { if (err) {return next (err);} res.json ({user: user}); }); }) (req, res, next); }); 'и затем выполняет перенаправление с контроллера AngularJS. – skip

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