¿Hay algún truco para obtener un identificador de usuario único, que no cambie, cuando el usuario actualiza el navegador? Probé socket.io y sessionID de express, pero cambian cuando el usuario actualiza el navegador.
¿Por qué? Estoy tratando de crear un juego sin necesidad de iniciar sesión. La clase Usuario creará un lobby con amigos y luego iniciará el juego, que estará bloqueado para cualquier otro usuario, pero quiero hacer la característica, que si el el usuario que ya comenzó/se unió a cualquier juego actualizará el navegador, se volverá a conectar a su juego.
Ya configuré la base de datos que está lista para el identificador de usuario único, por lo que el lobby/juego sabrá quién estará autorizado para unirse y quién no.
Código de cómo se configuran mis sesiones:
const sessions = require('express-session'); ... app.use(sessions({ secret: "thisismysecretkey", saveUninitialized: true, resave: false })); ... app.post("/lobby/:id", (req, res) => { console.log(req.sessionID) });Con esta configuración, el ID de sesión cambia constantemente cuando las solicitudes son del mismo usuario.
PD Sí, el código secreto no es seguro, lo cambiaré después de hacerlo funcionar.
Descubrí por qué mi ID de sesión cambiaba con cada solicitud. Fue porque no estaba guardando nada en la sesión (porque solo estaba imprimiendo el ID de la sesión, preguntándome si cambiaría) , por lo que la sesión se eliminó y, en una nueva solicitud, se creó la nueva sesión, etc. Debería haber leído más documentación. en sesiones express.
De todos modos, si alguien se preguntaba cómo guardar algo en la sesión, aquí hay un ejemplo simple que cuenta cuántas veces visitó el sitio web.
app.get("/test", function (req, res) { console.log(req.sessionID, req.session); if (req.session.page_views) { req.session.page_views++; res.send("You visited this page " + req.session.page_views + " times"); } else { req.session.page_views = 1; res.send("Welcome to this page for the first time!"); } });Y si su ID de sesión todavía está cambiando, verifique la configuración de su sesión (esta funciona)
app.use( session({ secret: "thisismysecretkey", saveUninitialized: true, resave: true, cookie: { secure: false, }, }) );