2014-08-31 66 views
1

如何在expressjs(4.0)中创建会话?Node.js ExpressJs创建会话

我做的links

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

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

但是它给出错误完全一样?

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

如何在expressjs中创建会话?我一直在尝试创建3天的会话。

+0

你用'npm install express-session'安装了吗?你有没有安装和使用cookie分析器? – 2014-08-31 10:55:44

+0

@Matthew Bakaitis是的,我已经安装了它。 – ozer 2014-08-31 11:11:20

回答

3

在快递4,这样

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

创建会话你会

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

进一步信息前,必须使用cookieParser,read connect official documentation here

+1

'注意从版本1.5.0开始,不再需要使用cookie分析器中间件来使该模块工作。 '(https://www.npmjs.com/package/express-session) – MondKin 2017-11-22 22:17:28

1

完整代码:

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"); 
}); 

请看这里:http://codeforgeek.com/2014/09/manage-session-using-node-js-express-4/