Tengo 3 archivos: app.js, index.js (rutas), Users.js (controlador)
Una vez que mi usuario haya iniciado sesión (verificación realizada entre la información POST y la base de datos), quiero guardar datos en una sesión usando expressjs/session.
Aquí está la declaración de mi sesión en app.js:
var session = require('express-session'); app.use(session({ resave: true, saveUninitialized: true, secret: 'trolololo' }));Aquí están mis rutas:
router.post('/login', function(req, res, next) { Users.login(req, res); }); router.get('/getSessionInfos', function(req,res,next){ console.log(req.session); });Y aquí está el controlador para el inicio de sesión:
login : function(req, res){ var formEmail = req.body.email; var formPassword = req.body.password; User.findOne({ where: {email: formEmail} }).then(function(user) { if(user){ if (user.password == formPassword){ console.log('User connected'); req.session.email = formEmail; req.session.password = formPassword; console.log(req.session); res.status(200).send('User Authentified'); }else{ res.status(401).send('Invalid Password'); } }else{ res.status(401).send('Username'); } }); },El inicio de sesión funciona. Obtengo el estado 200 y mi console.log en la función de inicio de sesión muestra una función con mi información. Pero cuando intento obtener mi sesión de la URL /getSessionInfos, está vacía... Envíe ayuda
Sé que no preguntó esto, pero lo diré de cualquier manera, las sesiones ya no se recomiendan en el nodo, los tokens web json son prácticamente los que están en el trono. En esencia, es una pieza de datos firmada en formato JSON. Debido a que está firmado, el destinatario puede verificar su autenticidad. Debido a que es JSON, pesa muy poco.
En términos muy simples, JWT es genial porque no necesita mantener los datos de la sesión en el servidor para autenticar al usuario.
- El usuario llama al servicio de autenticación, normalmente enviando nombre de usuario y contraseña.
- El servicio de autenticación responde con un JWT firmado, que dice quién es el usuario.
- El usuario solicita acceso a un servicio seguro devolviendo el token.
- La capa de seguridad verifica la firma en el token y, si es genuino, se otorga el acceso.
Puede usar jwt-simple en npm.
Su código parece correcto solo algunos cambios
app.use(session({ secret : 'yourSecret', resave : false, saveUninitialized : false, }));No olvide iniciar sesión primero, ya que está almacenando el valor de la sesión allí y luego seguramente mostrará el objeto con la clave de correo electrónico y contraseña. Avísame si tienes algún problema.