在express項目中設置、獲得cookie。

1. 新建一個express項目。

express node-cookie

2. 安裝依賴。

cd node-cookie
npm i

因cookie-parser是express框架內置的,全部不用再手動安裝了。前端

3. 設置cookie.

./routes/users.js文件裏新建一個路由/setcookie,並在該路由內設置路由。也能夠設置多個cookie,獲得cookie時也就是多個。node

router.get('/setcookie', (req, res, next) => {
  res.cookie('name', 'stone', {maxAge: 6000, httpOnly: true})
  res.send('success for set up')
})

圖片描述

4. 獲得cookie.

一旦cookie設置成功後,前端與後端通訊時會在請求頭裏帶上cookie.後端使用req.cookies獲得。git

router.get('/getcookie', (req, res, next) => {
  res.send(JSON.stringify(req.cookies)) // {"name":"stone"}
})

5. 設置簽名cookie

在no.3步設置的cookie明文。若須要簽名,則能夠使用cookie-parser模塊的signed: true屬性。express

// app.js
app.use(cookieParser('secrete')) // 其參數用於加簽名、解簽名時。
// 測試一下加密、解密功能。
// ./routes/users.js
router.get('/setcookie', (req, res, next) => {
  res.cookie('name', 'stone', {maxAge: 60000, httpOnly: true})
  res.cookie('name1', 'stone', {maxAge: 60000, httpOnly: true})
  res.cookie('name20', 'stone', {maxAge: 60000, httpOnly: true, signed: true})
  res.cookie('name21', 'stone', {maxAge: 60000, httpOnly: true, signed: true})
  res.send('success for set up')
})

圖片描述

6. 獲得簽名cookie

// ./routes/users.js
router.get('/getcookie', (req, res, next) => {
  let o = {
    unsign: req.cookies,
    signed: req.signedCookies
  }
  res.json(o)
})

圖片描述

7. 說說cookie-parser。

設置cookie時使用的res.cookie的第三個參數是cookie的限制屬性。npm

cookie-parser 是一個解析/設置cookie的模塊。在express框架使用須要憑藉如下代碼。json

var express = require('express')
var cookieParser = require('cookie-parser')
var app = express()
app.use(cookieParser('signText')) // 若使用簽名必須設置secret string,
// app.use(cookieParser()) // 這是不使用簽名的。

這裏有我翻譯的cookie-parser的文檔。後端

8. 往後項目改進。

因cookie會保存在client,因此最好不保存敏感信息。
因有些瀏覽器對cookie大小、數量有限制,因此不能設置太多cookie.
所以會使用cookie保存session ID 的方式解決以上2個缺點。瀏覽器

相關文章
相關標籤/搜索