javascript - sessions - cómo usar sesiones en express, couchDB y node.js
passport session (4)
así que básicamente quiero usar sesiones para almacenar el nombre de los usuarios y verificar si el usuario inició sesión o no. De lo contrario, la página se redirigirá a la página de inicio de sesión.
Estoy usando Node.js, express y couchDB.
Aquí es cómo configuro mi sesión hasta ahora
var MemoryStore = require(''connect'').session.MemoryStore;
app.use(express.cookieParser());
app.use(express.session({
secret: "keyboard cat",
store: new MemoryStore({
reapInterval: 60000 * 10
})
}));
Para almacenar algo en la sesión, uso el siguiente código ¿verdad?
req.session = {user:name);
Entonces la variable de sesión parece funcionar en mi página de inicio de sesión. Guardo con éxito el nombre del usuario en la sesión Sin embargo, cuando trato de acceder a la variable de sesión en otra página, me da el error
Cannot read property ''user'' of undefined
todo lo que hago es:
if (req.session.user){
¿Por qué está ocurriendo este error? ¿Las sesiones no son globales para toda la aplicación? O me estoy perdiendo algo completamente aquí.
¡Gracias por adelantado!
Estaba tratando de resolver exactamente el mismo problema durante las últimas horas.
Intente inicializar su servidor así:
var app = express.createServer(
express.cookieParser(),
express.session({ secret: "crazysecretstuff"})
);
Eso debería funcionar.
Si está app.use(app.router)
antes de las líneas que configuran la cookie y el manejo de la sesión, intente moverlo después de ellas. Eso me solucionó el mismo problema.
Tuve el mismo problema de quedar indefinido para la variable de sesión, que sabía que estaba bien.
En mi caso, resultó ser causado por una solicitud de origen cruzada, había olvidado el encabezado withCredentials en la solicitud.
Entonces, por ejemplo, en mi aplicación Angular del lado del cliente, necesitaba hacer esto:
var config = { withCredentials: true };
return $http.get(appConfig.apiUrl + ''/orders'', config);
y en Expresar esto:
res.header(''Access-Control-Allow-Credentials'', true);
la sessionSecret
en la configuración (config.json?) debe estar no vacía:
sessionSecret: "something other than an empty string",