简体   繁体   中英

how to use sessions in express, couchDB, and node.js

so I basically want to use sessions to store the users name and check to see if the user logged in or not. If not, the page will redirect to the login page.

I am using Node.js,express,and couchDB.

Here is how i set up my session so far

var MemoryStore = require('connect').session.MemoryStore;
app.use(express.cookieParser());
app.use(express.session({ 
    secret: "keyboard cat", 
    store: new MemoryStore({ 
        reapInterval: 60000 * 10
    })
}));

To store something in the session, i use the following code right?

req.session = {user:name);

So the session variable seems to work on my login page. I successfully store the user's name into the session However, when I try to access the session variable on another page, it gives me the error

Cannot read property 'user' of undefined

all i'm doing is:

if (req.session.user){

Why is this error happening? are sessions not global to the whole app? Or am I missing something entirely here.

Thanks in advance!

If you're doing app.use(app.router) before the lines that set up the cookie and session handling, try moving it to after them. That fixed the same problem for me.

I was trying to solve the exact same problem for he last few hour.

Try initializing your server like that:

var app = express.createServer(
express.cookieParser(),
express.session({ secret: "crazysecretstuff"})
  );

That should work.

I had same issue of getting undefined for session variable which I knew was set ok.

In my case it turned out to be caused by cross origin request, I had forgotten the withCredentials header on the request.

So for example in my client side Angular app I needed to do this:

var config = { withCredentials: true };
return $http.get(appConfig.apiUrl + '/orders', config);

and in Express this:

res.header('Access-Control-Allow-Credentials', true);

配置中的sessionSecret (config.json?)应该是非空的:

sessionSecret: "something other than an empty string",

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM