I use express 4.13.3 and express-session 1.11.3. Here my configuration session:
app.use( session({/*store: new redis_store,*/name: 'connect.sid', secret: 'azerty is qwerty', resave: false, saveUninitialized: false, cookie:{httpOnly: false, secure: false, maxAge: null}}) );
Here I print req.cookies['connect.sid']
and req.sessionID
:
app.get("/", function (req, res) {
console.log(req.sessionID);
console.log(req.cookies['connect.sid']);
res.sendStatus(200);
});
On each refresh req.sessionID
is different and req.cookies['connect.sid']
is undefined. Some months ago, as req.sessionID
was changing at refresh, I decided to use req.cookies['connect.sid']
and it was working like a charm. Today I checked my code and I notice that connect.sid
doesn't exist anymore in the cookie.
So what is the problem? How I can use the session id of the cookie?
req.session.id
is the same as req.sessionID
and req.session.cookie
is the session config object.
After some tests I concluded that, if you want to access req.cookies['connect.sid']
, you need to use manually the session. For example, you can write req.session.i = 1
or whatever. Then the id connect.sid
will be visible in your navigator (using Chrome Dev Tools for instance). Moreover, if you want that req.sessionID
stays the same, you must not forget to call res.sendStatus(200)
or another response at the end of the function.
But one problem persists. Look at this code:
app.post("/upload-files", upload.array('files'), function (req, res, next) {
if(!req.session.i) req.session.i = 0;
++req.session.i;
console.log("i: " + req.session.i);
}
Here I send a post
request with an array of files using multer
. As multer
doesn't work with names of the form "files[]" (see multer-not-accepting-files-in-array-format-gives-unexpected-filed-error-used), I am obliged to send the files one by one. Here the problem occurs: the variable i
will not persist and will stay equal to 1.
I think that they are some bugs.