Express Cookie 解析器 – 帶簽名和未簽名 Cookie


我們可以使用 Cookie 在客戶端的 Web 瀏覽器中儲存使用者資訊。例如,每當使用者在瀏覽器中開啟任何網站時,它都會向伺服器請求一些資訊,並且一旦客戶端獲取到資訊,就會將其與過期時間一起儲存在瀏覽器中。

這使得網站對使用者來說速度更快,因為它不需要每次使用者返回網站時都向伺服器請求資訊。但是,一旦 Cookie 過期,客戶端會再次向伺服器請求該資訊。

在本教程中,我們將學習 express cookie-parse npm 包以及如何在客戶端的 Web 瀏覽器上設定 Cookie。

使用 cookie-parser NPM 包設定和獲取 Cookie

使用者可以按照以下步驟建立節點專案。

  • 步驟 1 − 首先,使用者需要在本地計算機上下載並安裝 Node Js。

  • 步驟 2 − 為專案建立一個新資料夾,並在該目錄中開啟終端。

  • 步驟 3 − 要啟動新的節點專案,請在專案目錄中的終端中輸入以下命令。

npm init -y
  • 步驟 4 − 現在,使用者需要安裝所需的 npm 包。第一個需要的包是 express,另一個是 cookie-parser。使用者可以執行以下命令將 npm 包下載到當前專案。

npm i express cookie-parser
  • 步驟 5 − 接下來,我們需要為節點伺服器設定伺服器程式碼。

使用者可以在專案目錄中建立一個新的 server.js 檔案並新增以下程式碼。

// importing the express package
const express = require("express");

// using the express for app
const app = express();
app.get("/", (req, res) => {
   res.send("Welcome to the new server!");
});

// setting up the port for the server
app.listen(5000, (err) => {
   console.log("Server started successfully on port 5000");
});
  • 步驟 6 − 現在,使用者需要執行專案,為此,使用者可以在終端中輸入以下命令。

node server.js

伺服器已成功啟動,當用戶訪問 https://:5000/ URL 時,他們可以看到以下輸出。

我們已經設定了節點專案。我們需要編寫程式碼來使用 cookie 解析器 NPM 包用於帶簽名和未簽名 Cookie。

cookie-parse 包的方法

在開始使用 Cookie 解析器編寫 Cookie 程式碼之前,讓我們瞭解它包含的方法。

cookieParser(key, cookieOptions)

使用者可以使用 cookieParser() 方法建立一個新的中介軟體。它將金鑰和 Cookie 選項作為引數;但是,兩者都是可選的。如果我們傳遞一個金鑰,它會將 Cookie 解析為帶簽名的 Cookie;否則,作為未簽名的 Cookie。

此外,使用者可以使用 request.cookie 解析未簽名的 Cookie,並使用 request.signedCookies 解析帶簽名的 Cookie。

cookieParser.JSONCookie(string)

如果我們設定一個 JSON 物件作為 Cookie,JSONCookie() 方法將返回 JSON 物件;否則,返回普通的字串值。

cookieParser.JSONCookies(Cookies_to_store)

Cookies_to_store 是一個物件。因此,當我們將物件作為 JSONCookies() 方法的引數傳遞時,它會遍歷物件的每個鍵值對,解析每個鍵的值,並將其替換為解析後的值。

cookieParser.signedCookie(string, key)

我們可以使用 signedCookie() 方法獲取解析後的未簽名 Cookie。如果金鑰無效,該方法會引發錯誤。此外,如果 Cookie 未簽名,則該方法會返回普通的未簽名值。

cookieParser.signedCookies(Cookies_to_store, key)

在這裡,Cookies_to_Store 再次是一個物件,使用者可以使用 signedCookies() 方法遍歷物件的每個值,並在金鑰有效的情況下為每個值解析帶簽名的 Cookie。它會返回一個包含解析後值的新 Cookie 物件。

注意 − 使用者只有在伺服器處於生產模式下才能看到 Cookie 輸出。此外,使用者可以使用線上 nodeJS 編輯器檢視輸出。

示例 – 未簽名 Cookie

在下面的示例中,我們向瀏覽器傳送 Cookie,而無需使用 Cookie 解析器中介軟體。我們使用了 send() 方法將 Cookie 傳送到瀏覽器。

const express = require("express");
const parser = require("cookie-parser");
const app = express();
app.get("/cookie", (request, response) => {

   // sending the unassigned cookies
   response.cookie("message", "This is a cookie.").send();
   console.log("The cookies are " + request.cookies);
});
app.listen(5000, (err) => {
   console.log("Server started successfully on port 5000");
});

示例 - 帶簽名 Cookie

在下面的示例中,我們使用了 Cookie 解析器中介軟體來生成帶簽名的金鑰。使用者可以看到我們如何使用 secret_key 初始化中介軟體。之後,我們將 {signed: true } 物件作為 cookie() 方法的引數新增,以傳送帶簽名的 Cookie。

const express = require("express");
const parser = require("cookie-parser");
const app = express();

// Initializing the middleware with a secret key
app.use(parser("secret_key"));

app.get("/cookie", (request, response) => {
   // sending the signed cookies
   response
   .cookie("message", "This is a singed cookie", { signed: true })
   .send();
   
   // using the signedCookies property to access cookies
   console.log("The cookies are " + request.signedCookies);
});
app.listen(5000, (err) => {
   console.log("Server started successfully on port 5000");
});

在本教程中,我們學習瞭如何傳送帶簽名和未簽名的 Cookie。金鑰是帶簽名和未簽名 Cookie 之間的主要區別。我們為帶簽名的 Cookie 提供金鑰,並且需要使用它來訪問它們。

要設定未簽名的 Cookie,使用者不需要使用 Cookie 解析器作為帶有金鑰的中介軟體。

更新於: 2023 年 3 月 17 日

1K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.