express框架之session 存儲


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查看存入的數據,並且可以看見,數據過期的時間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM