¡Estoy aprendiendo y aplicando la autenticación para el sitio web de mi blog!
Estoy usando express-session
para manejar los inicios de sesión. Las cookies en las sesiones del navegador y del servidor funcionan bien.
Sin embargo, tengo problemas para recuperar cookies en la aplicación Express del lado del servidor . Intenté lo siguiente:
[Object: null prototype]
.undefined
Mi código / configuración es la siguiente:
function auth (req, res, next) { // Problem: Cannot read browser cookie of HTTP requests. console.log('Based on browser', req.cookie, req.cookies, req.signedCookies); next(); } router.get('/', auth, async (req, res) => { // ... }
Middlewares
app.use(cors({ origin: ['http://localhost:3000'], credentials: true })); app.use(cookieParser()) // Also tried with secret option. app.use(session({ secret: 'top-secret', resave: true, rolling: true, saveUninitialized: false, store: store, // this is working cookie: { maxAge: 1000 * 60 * 60 * 24 * 14, httpOnly: true, secure: process.env.NODE_ENV !== 'Development', sameSite: process.env.NODE_ENV === 'Development' ? 'lax' : 'none' } }))
Gracias de antemano :)
Si solo usa http, debe considerar 2 cosas:
Paso 1 mientras se solicita en el lado del cliente: debe enviar una solicitud como esta:
const req = await fetch("http://localhost:7000/api/auth/login", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json", "Access-Control-Allow-Credentials": true, }, body: JSON.stringify({ email: formData.get("email"), password: formData.get("password"), }), }); const data = await req.json();
paso 2 en expreso:
const allowedOrigins = ["http://localhost:8000"]; const corsOptions = { origin: function (origin, callback) { if (allowedOrigins.indexOf(origin) !== -1) { callback(null, true); } else { var msg = "The CORS policy for this site does not " + "allow access from the specified Origin."; callback(new Error(msg), false); } }, optionsSuccessStatus: 200, credentials: true, }; app.use(cors(corsOptions));
ahora puede obtener cookies en express usando req.cookies.nameOfCookiesWhichYouSendThroughCoockieParser