Node.js 教程第十一篇——Session

Session

Session 是一種記錄客戶狀態的機制,不一樣的是 Cookie 保存在客戶端瀏覽器中,而 Session 保存在服務器上的進程中。javascript

客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上,這就是 Session。客戶端瀏覽器再次訪問時只須要從該 Session 中查找該客戶的狀態就能夠了。java

若是說 Cookie 機制是經過檢查客戶身上的「通行證」來肯定客戶身份的話,那麼 Session 機制就是經過檢查服務器上的「客戶明細表」來確認客戶身份。express

Session 至關於程序在服務器上創建的一份客戶檔案,客戶來訪的時候只須要查詢客戶檔案表就能夠了。跨域

Session 不能跨域瀏覽器

Session 與 Cookie 的區別

  • Cookie 數據存放在客戶的瀏覽器上,Session 數據放在服務器上的進程中。
  • Cookie 不是很安全,別人能夠分析存放在本地的 Cookie 並進行 Cookie 欺騙 考慮到安全應當使用 Session。
  • Session 會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能
  • 單個 Cookie 保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個 Cookie。

Session 應用

const express = require('express')
const path = require('path')
const app = express();

const bodyParser = require('body-parser');

const cp = require('cookie-parser');
const session = require('express-session');

app.use(cp());
app.use(session({
    secret: '12345',//用來對session數據進行加密的字符串.這個屬性值爲必須指定的屬性
    name: 'testapp',   //這裏的name值得是cookie的name,默認cookie的name是:connect.sid
    cookie: {maxAge: 5000 },  //設置maxAge是5000ms,即5s後session和相應的cookie失效過時
    resave: false,
    saveUninitialized: true,    
}))
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname, '/')));

app.get('/setsession', (request, response) => {
    request.session.user = {username: 'admin'};
    response.send('set session success');
})

app.get('/getsession', (request, response) => {
    response.send(request.session.user);
})

app.get('/delsession', (request, response) => {
    delete reqeust.session.user;
    response.send(request.session.user);
})

app.listen(88)
相關文章
相關標籤/搜索