node.js中express使用cookie-parser 和 cookie-session處理會話


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();
});

  

 


免責聲明!

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



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