cookie-parser 中間件用來解析客戶端傳過來的cookie,cookie-session 中間件用來建立基於cookie的會話session。
一、安裝 cookie-parser 和 cookie-session
npm install cookie-parser npm install cookie-session
二、使用 cookie-parser 解析
const express = require('express');
const cookieParser = require('cookie-parser');
let app = express();
app.listen(8888);
//使用解析cookie中間件
//cookieParser()參數一,用來設置簽名密鑰,可以是一個數組,設置多個。
app.use(cookieParser());
app.get('/', function (req, res) {
//獲取cookie信息
console.log('Cookies: ', req.cookies);
//設置cookie
//參數一表示,cookie名稱
//參數二表示,cookie的值
//參數三表示,cookie的配置選項
// domain 域名
// path 路徑
// expires 過期時間
// maxAge 有效時間(以毫秒為單位)
// httpOnly 只能由web服務器訪問
// secure 是否與https一起使用
// signed 是否簽名
res.cookie('test', 'test', {path: '/', expires: new Date(Date.now() + 3600 * 1000)});
res.cookie('name', 'xiaoxu', {maxAge: 3600 * 1000});
res.end();
});
為了防止cookie信息被篡改,我們可以設置簽名。
const express = require('express');
const cookieParser = require('cookie-parser');
let app = express();
app.listen(8888);
//使用解析cookie中間件
//cookieParser()參數一,用來設置簽名密鑰,可以是一個數組,設置多個。
app.use(cookieParser('fermtp34n537m3o450'));
app.get('/', function (req, res) {
//獲取cookie信息
console.log('cookies: ', req.cookies);
//設置使用簽名
res.cookie('test', 'test', {signed: true});
//使用簽名的cookie通過下面方式獲取
console.log('signedCookies: ', req.signedCookies);
res.end();
});
二、使用 cookie-session 處理會話
注意cookie-session中間件是基於cookie的,會把會話信息存儲在cookie里。
const express = require('express');
const cookieSession = require('cookie-session');
let app = express();
app.listen(8888);
app.use(cookieSession({
//會話在cookie中的名稱
name: 'session',
//用於簽名的密鑰
keys: ['j239r5ndgffte'],
//cookie過期時間,單位毫秒
maxAge: 3600 * 1000
}));
app.get('/', function (req, res) {
//獲取會話數據
console.log(req.session);
//設置會話數據
req.session.name = 'xiaoxu';
req.session.age = 24;
req.session.sex = '男';
res.end();
});
