2

How can I create session in expressjs(4.0)?

I am doing exactly same in the links

var session = require('express-session');

/* session */
app.use(session({ secret: '1s2sd25asd7asd5asd7f4f1f'}))

However it gives error?

TypeError: Cannot read property 'connect.sid' of undefined

How do I create session in expressjs? I have been trying to create session for 3 days.

2
  • Did you install it with npm install express-session? Do you have the cookie parser installed and in use? Commented Aug 31, 2014 at 10:55
  • @Matthew Bakaitis yes I have already installed it. Commented Aug 31, 2014 at 11:11

2 Answers 2

6

In express 4, create session like this

var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
var session = require('express-session');

You have to must use cookieParser before session

app.use(cookieParser())
app.use(session({secret: 'MySecret'}));

for further information, read connect official documentation here

Sign up to request clarification or add additional context in comments.

1 Comment

Note Since version 1.5.0, the cookie-parser middleware no longer needs to be used for this module to work. (npmjs.com/package/express-session)
2

Complete code :

var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var app = express();

app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);

app.use(session({secret: 'ssshhhhh'}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

var sess;

app.get('/',function(req,res){
sess=req.session;
//Session set when user Request our app via URL
if(sess.email)
{
/*
* This line check Session existence.
* If it existed will do some action.
*/
res.redirect('/admin');
}
else{
res.render('index.html');
}
});

app.post('/login',function(req,res){
sess=req.session;
//In this we are assigning email to sess.email variable.
//email comes from HTML page.
sess.email=req.body.email;
res.end('done');
});

app.get('/admin',function(req,res){
sess=req.session;
if(sess.email)
{
res.write('
<h1>Hello '+sess.email+'</h1>
');
res.end('<a href="+">Logout</a>');
}
else
{
res.write('
<h1>Please login first.</h1>
');
res.end('<a href="+">Login</a>');
}

});

app.get('/logout',function(req,res){

req.session.destroy(function(err){
if(err){
console.log(err);
}
else
{
res.redirect('/');
}
});

});
app.listen(3000,function(){
console.log("App Started on PORT 3000");
});

Read here : http://codeforgeek.com/2014/09/manage-session-using-node-js-express-4/

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.