nodejs取得請求session

WBOY
發布: 2023-05-11 14:45:37
原創
790 人瀏覽過

Node.js 是一種伺服器端 JavaScript 執行階段環境,它具有快速、跨平台、模組化等特點,可以建立高效穩定的伺服器端應用程式。在開發 Web 應用程式時,會使用到 SESSION,那麼如何在 Node.js 中取得請求 SESSION 資訊呢?本文將從 SESSION 的概念、Session 在 Node.js 中對應的模組和具體 API 資訊等方面介紹如何取得請求 SESSION。

一、SESSION 的概念

SESSION 是一種跨請求的機制,用於儲存使用者資訊及操作,透過保存SESSION 變量,使用者在訪問網站的不同頁面時能夠保持登錄狀態並且在不同頁間傳遞資料。 SESSION 是一種伺服器端的狀態保持方式,即為每個會話分配一個唯一的ID,然後透過將ID 保存在客戶端(一般是保存在客戶端的Cookie 裡)上,來實現伺服器端和客戶端的通訊和跟踪。對於每個新的會話,都會建立一個新的 ID 來進行追蹤。

在 Web 開發中,SESSION 可以用來最佳化安全性、提高使用者體驗、實現使用者特定需求等等。

二、Session 在 Node.js 中的使用

在 Node.js 中,有個常用的 SESSION 模組 express-session,它可以為 Express 應用程式新增會話支援。我們不妨了解下其使用方法:

1、安裝express-session 模組

在命令列中輸入以下命令:

npm install express-session
登入後複製

2、在專案中引入express- session:

在你的專案中,加入以下程式碼:

var express = require('express'); var session = require('express-session'); var app = express();
登入後複製

3、使用express-session 中間件

在你的專案中,加入以下程式碼:

app.use(session({ secret: 'keyboard cat',//secret的值建议使用随机字符串 cookie: { maxAge: 60000 }, resave: true, saveUninitialized: true }))
登入後複製

其中:

  • secret 是Session ID 加密用的金鑰,可以隨意設定
  • cookie 中的maxAge 是定義Session ID 的有效期限
  • resave:true 表示每次請求都重新儲存session,無論是否改變。
  • saveUninitialized:true 表示用戶未登錄,每次請求都重新設定Session 與Cookie

4、進行SESSION 的設定和取得

#在你的項目中,你可以透過以下程式碼來進行SESSION 的設定和取得:

設定:

req.session.userName="tom";
登入後複製

取得:

var userName = req.session.userName;
登入後複製

接下來,我們將結合範例來具體講解如何在Node.js 中取得請求SESSION 資訊。

三、具體 API 資訊

為了更好地了解如何取得請求 SESSION 信息,我們先來了解下 SESSION 在 Node.js 中對應的 API。

req.session

這是 session 的請求中間件,它可以透過寫入 req.session 來實現對話控制。使用範例為:

req.session.userName='xiaoming';
登入後複製

以上程式碼實作了將userName加入 session 中。在 Express 中,對話訊息保存在 session 中,這是一個對象,可以像操作普通 JavaScript 物件一樣對它進行操作。

req.session.destroy

此屬性表示當使用者退出時,將 session 中儲存的資料清除。使用範例為:

req.session.destroy(function(err) { // cannot access session here })
登入後複製

當 session 銷毀時,回呼函數將會被執行。

四、範例示範

接下來,我們透過一個範例來示範如何取得請求 SESSION 資訊。

1、建立專案

首先,初始化專案並建立main.js 檔案:

mkdir node-app && cd node-app npm init touch main.js
登入後複製

2、安裝express 和express-session 並引入

#在命令列中輸入以下命令安裝express 和express-session 並引入:

npm install express --save npm install express-session --save
登入後複製

在main.js 中寫入以下程式碼:

const express = require('express') const session = require('express-session') const app = express() app.use(session({ secret: 'keyboard cat',//secret的值建议使用随机字符串 cookie: { maxAge: 60000 }, resave: true, saveUninitialized: true })) app.get('/login', (req, res) => { req.session.userName = 'Qiming' res.send('login success') }) app.get('/home', (req, res) => { let userName = req.session.userName if (userName) { res.send(`welcome ${userName}`) } else { res.send('please login first') } }) const server = app.listen(3000, () => { console.log(`app is running at http://localhost:${server.address().port}`) })
登入後複製

上面的程式碼中:

  • 首先引入express 和express-session 模組
  • 建立應用app 對象,並在中間加入session 中間件
  • 當存取/login 時,將使用者名稱儲存在req.session .userName 中
  • 當訪問/home 時,嘗試從req.session 中取得userName ,如果存在則歡迎,並給予訊息,否則提示使用者先登入
  • 應用程式啟動時監聽在3000在連接埠上,輸出啟動的日誌資訊

3、執行專案並測試

在終端機中執行以下命令:

node main.js
登入後複製

開啟瀏覽器,造訪http: //localhost:3000/login ,得到「login success」 訊息,造訪http://localhost:3000/home ,得到「welcome Qiming」 訊息,說明SESSION 取得成功。

五、總結

在本文中,我們了解了SESSION 的概念、SESSION 在Node.js 中的使用、具體API 資訊和一個演示範例,希望能幫助大家更好地了解如何在Node.js 中取得請求SESSION 資訊。在實際的專案中,如何使用 SESSION 需要根據實際情況來決定,可以根據業務需求來實現。

以上是nodejs取得請求session的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!