Access Session Object In Express Middleware
This is my Express middleware stack: var server = express() .use(express.cookieParser()) .use(express.session({secret: 'Secret'})) .use(express.bodyParser()) .use(f
Solution 1:
This program works fine. Before I access /setSession
, the middleware prints after session: undefined
. Once I GET /setSession, it prints after session: admin
. As long as the browser you are testing with (not curl) stores and sends the session cookies, this will work as expected.
var express = require('express');
var server = express();
server.use(express.cookieParser());
server.use(express.session({secret: 'SEKRET'}));
server.use(function (q,r,n) {console.log('after session:', q.session.user);n();});
server.get('/', function (q,r,n) {r.send("you got slashed");});
server.get('/setSession', function (req, res) {
console.log("logging admin in via /setSession");
req.session.user = 'admin';
res.send("admin logged in");
});
server.listen(3000);
Solution 2:
There must be something wrong with your settings. The following example, that is very similar to your code but uses GET
instead POST
, works fine for me
app.configure(function(){
// ...
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(function(req, res, next) {
console.log(req.session.user + ' from middleware');
next();
});
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
and
app.get('/getSession', function(req, res) {
console.log(req.session.user);
res.send('awesome');
});
app.get('/setSession', function(req, res) {
req.session.user = 'admin';
res.send('done');
});
Now when you do the following everything works as expected
- GET /getSession => undefined from middleware, undefined
- GET /setSession => undefined from middleware
- GET /getSession => admin from middleware, admin
Post a Comment for "Access Session Object In Express Middleware"