Pregunta de reacción de novato: lo estoy usando con pasaporte.js y expreso. Estoy iniciando sesión correctamente en la aplicación. Pero no sé cómo hacer una redirección.
router.post('/login', passport.authenticate('local'), function(req, res) { // If this function gets called, authentication was successful. res.redirect('/upload'); //<—— what I'd like to do is some kind of redirect here });Cualquier ayuda apreciada.
Haz eso en tu ruta de devolución de llamada.
router.get('/facebook', passport.authenticate('facebook', { scope: ['public_profile', 'email'] })); router.get('/facebook/callback', passport.authenticate('facebook', { failureRedirect: "/" }), function (req, res) { if (req.user || req.session.user) return res.redirect('/' + req.user._id || req.session.user._id); return res.redirect('/login'); }); Aquí, he usado passport.js para el inicio de sesión de Facebook. y en /facebook/callback he redirigido a /login y en /login tengo una función para verificar si la sesión está configurada.
if (Helper.isLoggedIn(req)) { res.redirect('/'); return; } La definición de isLoggedIn dentro de Helper.js es
function isLoggedIn(req) { if (req.session && req.session.user_email && req.session.user_email != null) { if (!req.user || req.session.user == undefined || req.session.user == null) { loadUserFrom(req); } return true; } return false; }Puede ser que pueda considerar hacer la redirección en react-js después de obtener la respuesta del servidor. Suponga que usa el redux-thunk.
acción.js:
import axios from 'axios'; import { browserHistory } from 'react-router'; export function signinUser({ email, password }) { return function(dispatch) { axios.post(`${ROOT_URL}/signin`, { email, password }) .then(response => { // Successful login, redirect to /upload browserHistory.push('/upload'); }) .catch(() => { //handle the error response from server }); } }