Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'session' is undefined when using express / redis for session store

Tags:

I'm trying to use redis for sessions in my express app.

I do the following:

var express = require('express'); var RedisStore = require('connect-redis')(express);  app.configure('development', function(){          app.use(express.session({ secret: "password",                              store: new RedisStore({                                           host: "127.0.0.1",                                           port: "6379",                                           db: "mydb"                                         })             })); 

Later on, in my app, if i do something like:

var whatever = req.session.someProperty; 

I get:

Cannot read property 'someProperty' of undefined

This indicates that req.session is undefined (I can see this from a console.log entry in my config section)

I've definitely got redis running, and can see my app connects to it initially (using redis-cli monitor)

like image 222
Alex Avatar asked Apr 17 '12 12:04

Alex


2 Answers

Sessions won't work unless you have these 3 in this order:

app.use(express.cookieParser()); app.use(express.session()); app.use(app.router); 

I'm not sure if router is mandatory to use sessions, but it breaks them if it's placed before them.

like image 77
Yxven Avatar answered Sep 21 '22 20:09

Yxven


Looks like you're missing:

app.use(express.cookieParser()); 

before your app.use(express.session(...)); call.

See here.

like image 34
JohnnyHK Avatar answered Sep 20 '22 20:09

JohnnyHK