Как перенаправить пользователя обратно на ту же страницу после аутентификации?

99
9

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

Сценарий: я хотел сказать, /profile, чтобы продолжить, только когда пользователь вошел в систему.

Вот маршрут, который я сделал,

var express = require('express');
var router = express.Router();

остальные находятся в файле router/index.js

var passport = require('passport');
var ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn;

router.post('/login', passport.authenticate('login', {
successRedirect: '/home',
failureRedirect: '/',
failureFlash : true
}));

router.get('/profile', ensureLoggedIn('/'), function(req, res){
res.json({ user: req.user });
});

Поэтому, основываясь на моем понимании и готовности, когда я сделал GET/profile, мне пришлось перейти на страницу входа в систему, а затем перенаправить на GET/profile. К сожалению, поскольку страница входа в систему должна возвращаться домой, она делает это.

connect-обеспечить-login - это то, что я ожидал, чтобы решить проблему, но это не так. Как мне заставить работать, как мне было нужно?

спросил(а) 2016-06-04T23:41:00+03:00 4 года, 4 месяца назад
1
Решение
81

Вы должны использовать successReturnToOrRedirect вместо successRedirect:

router.post('/login', passport.authenticate('login', {
successReturnToOrRedirect : '/home',
failureRedirect : '/',
failureFlash : true
}));

ответил(а) 2016-06-04T23:55:00+03:00 4 года, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема