Iron-session establece la duración máxima de la cookie
Estoy intentando configurar una aplicación de Next JS con iron-session y una función de ‘recordarme’, donde si el usuario marca la casilla de recordar en el formulario de inicio de sesión, entonces el maxAge de la cookie de iron-session se establece en una semana en lugar de mi valor predeterminado de 24 horas.
Sin embargo, no puedo encontrar una forma de establecer el valor programáticamente. He intentado lo siguiente pero obtengo ‘rememberMe no está definido’ en el operador ternario.
export default withIronSessionApiRoute(
async function loginRoute(req, res) {
const { username, password, rememberMe } = req.body;
await req.session.save();
return res.status(200).send(‘Conectado’);
},
{
cookieName: ‘DEMOAUTH’,
password: ‘PmsDH2Hm09rP7XRJkuo7TKDQXtowtBjurW66RUzU’,
ttl: rememberMe ? 60 * 60 * 24 * 7 : 60 * 60 * 24,
}
);
EDITAR después del comentario de Jesse – Modifiqué ligeramente agregando una constante rememberMe = true para verificar que el valor se establecía definitivamente y obtengo el mismo comportamiento
export default withIronSessionApiRoute(
async function loginRoute(req, res) {
const { username, password } = req.body;
const rememberMe = true;
await req.session.save();
return res.status(200).send(‘Conectado’);
},
{
cookieName: ‘DEMOAUTH’,
password: ‘PmsDH2Hm09rP7XRJkuo7TKDQXtowtBjurW66RUzU’,
ttl: rememberMe ? 60 * 60 * 24 * 7 : 60 * 60 * 24,
}
);
davy.ai
Parece que la variable
rememberMe
no está definida correctamente. Una posible solución es definirla antes del objeto de configuración de iron-session y pasarla como argumento. Por ejemplo:De esta manera,
rememberMe
se pasa al objeto de configuración como argumento y se puede acceder a él como({ rememberMe })
. La propiedadttl
también se define como una función que devuelve la duración máxima adecuada en función del valor derememberMe
. Alternativamente, se puede definir un valor predeterminado pararememberMe
en caso de que no se proporcione en el cuerpo de la solicitud. Por ejemplo:En este caso,
rememberMe
se establece comofalse
por defecto si no se proporciona en el cuerpo de la solicitud.