express中的會話存儲方式

會話存儲須要用的express-session包node

app.use(require('express-sessiion')())

express-session接收帶有以下選項的配置對象:redis

key;存放惟一會話標識的cookie名稱,默認爲connect.sid,mongodb

store 會話存儲的實例,默認爲一個MemoryStore的實例express

cookie 會話cookie的cookie設置(path,domain,secure等)服務器

會話設置以後使用起來很是簡單,就是使用req請求對象的session屬性,注意,響應對象上是沒有session屬性的cookie

req.session.userName = 'kevin' //設置session

delete req.sessiion.userName 刪除session

一般,生產環境咱們不會用服務器內存來存儲session數據,由於一旦服務器重啓session就沒了,也不適合作集羣擴展。session

能夠用mongodb或redis來存儲會話數據app

1,mongodb存儲會話,須要用到mongoose-sessiondom

var express = require('express');

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/db');

var app = express();

app.use(require('express-session')({
    key: 'session',
    secret: 'SUPER SECRET SECRET',
    store: require('mongoose-session')(mongoose)
}));

mongodb存儲會話有不少插件可用,另一個很好的插件connect-mongo-storemongoose

var express = require('express');
var app = express();
var MongoStore = require('connect-mongo-store')(express)

app.use(express.session({store: MongoStore, secret: 'keyboard cat'}))

or

app.use(require(''express-session")({store:MongoStore,secret:''xxxx}))

 

2,redis存儲會話

var session = require('express-session');
var RedisStore = require('connect-redis')(session);
 
app.use(session({
    store: new RedisStore(options),
    secret: 'keyboard cat'
}));

options對象主要包括如下幾個選項

client:redis客戶端,經過安裝node_redis來建立redis客戶端對象

host redis服務器主機名

port redis服務器端口

url redis服務器url

相關文章
相關標籤/搜索