hay preguntas similares pero ninguna de ellas ayudó. Estoy usando pasaportes para autenticar al usuario y estoy usando la función de devolución de llamada personalizada que se requiere para llamar al inicio de sesión para establecer sesiones y poder usar req.user en cualquier ruta. Estoy usando react.js como frontend, mi ruta de inicio de sesión es:
router.post('/login',(req, res, next) => { passport.authenticate("local", (err, user, info) => { if(err) return next(err); if (!user) return res.send(info); req.logIn(user, (err) => { if(err) return next(err); //session should established res.json(user) }); })(req, res, next); });mi index.js así:
const express = require("express") const bodyParser = require("body-parser") const passport = require("passport") const session = require("express-session") const cookieParser = require("cookie-parser"); const MongoStore = require("connect-mongo") const User = require("./modules/user") const app = express() app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); const SessionStore = MongoStore.create({mongoUrl:`mongoDB URL`}) app.use( session({ secret: 'secret', resave: false, saveUninitialized: false, store: SessionStore //save sessions in mongoDB }) ); app.use(cookieParser()) app.use(cors({credentials: true, origin: 'http://localhost:3000'})); app.use(passport.initialize()); app.use(passport.session()); //my local Strategy here passport.serializeUser(function(user, done){ done(null, user.id) }) passport.deserializeUser(function(id, done){ User.findById(id, function(err, user) { done(err, user); }) })