1.express-session 是基於express框專門用於處理session的中間件。這里不談express-session怎么安裝,只給出相應的實例代碼。另外,session的認證機制離不開cookie,需要同時使用cookieParser 中間件
express框架之session 內存存儲
var express = require('express');
var session = require('express-session');
var cookieParser = require('cookie-parser');
var app = express();
app.use(cookieParser());
app.use(session({
secret: '12345',
name: 'testapp', //這里的name值得是cookie的name,默認cookie的name是:connect.sid
cookie: {maxAge: 80000 }, //設置maxAge是80000ms,即80s后session和相應的cookie失效過期
resave: false,
saveUninitialized: true,
}));
app.get('/awesome', function(req, res){
if(req.session.lastPage) {
console.log('Last page was: ' + req.session.lastPage + ".");
}
req.session.lastPage = '/awesome'; //每一次訪問時,session對象的lastPage會自動的保存或更新內存中的session中去。
res.send("You're Awesome. And the session expired time is: " + req.session.cookie.maxAge);
});
app.get('/radical', function(req, res){
if (req.session.lastPage) {
console.log('Last page was: ' + req.session.lastPage + ".");
}
req.session.lastPage = '/radical';
res.send('What a radical visit! And the session expired time is: ' + req.session.cookie.maxAge);
});
app.get('/tubular', function(req, res){
if (req.session.lastPage){
console.log("Last page was: " + req.session.lastPage + ".");
}
req.session.lastPage = '/tubular';
res.send('Are you a suffer? And the session expired time is: ' + req.session.cookie.maxAge);
});
app.listen(5000);
express框架之session 數據庫存儲
上面的這種內存存儲,只能短期存儲,要想存個幾周,就得用上數據庫了。下面采用mongodb,
這里,我是首先打開自己電腦的mongodb

然后,啟動服務
var express = require('express');
var session = require('express-session');
var cookieParser = require('cookie-parser');
var MongoStore = require('connect-mongo')(session);
var app = express();
app.use(cookieParser());
var settings = {
cookieSecret: 'myblog',
db: 'blog',
host: 'localhost',
port: 27017
}
app.use(session({
secret: settings.cookieSecret,
key: settings.db,//cookie name
cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
resave: false,
saveUninitialized: true,
store: new MongoStore({
url: 'mongodb://localhost/blog'
})
}));
app.get('/awesome', function(req, res){
if(req.session.lastPage) {
console.log('Last page was: ' + req.session.lastPage + ".");
}
req.session.lastPage = '/awesome'; res.send("You're Awesome. And the session expired time is: " + req.session.cookie.maxAge); });
app.get('/radical', function(req, res){
if (req.session.lastPage) { console.log('Last page was: ' + req.session.lastPage + "."); }
req.session.lastPage = '/radical'; res.send('What a radical visit! And the session expired time is: ' + req.session.cookie.maxAge); });
app.get('/tubular', function(req, res){ if (req.session.lastPage){ console.log("Last page was: " + req.session.lastPage + "."); }
req.session.lastPage = '/tubular'; res.send('Are you a suffer? And the session expired time is: ' + req.session.cookie.maxAge); });
app.listen(5000);
最后,在存入數據之后,可以使用Robomongo查看存入的數據,並且可以看見,數據過期的時間

