2014-08-31 5 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? –

+0

@Matthew Bakaitis Да, я уже установил его. – ozer

ответ

3

В экспресс-4, создать сеанс как этот

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

Вы должны должны использовать cookieParser до начала сессии

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

для получения дополнительной информации, read connect official documentation here

+1

'Примечание. Начиная с версии 1.5.0, для этого модуля больше не нужно использовать промежуточное ПО cookie-parser. '(https://www.npmjs.com/package/express-session) – MondKin

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/

Смежные вопросы