這次帶給大家Express Session實作登入驗證功能(附程式碼),Express Session實作登入驗證功能的注意事項有哪些,以下就是實戰案例,一起來看一下。
對於使用Express和Session實作登入驗證也是很多人在探求的,這次文章就給大家簡單的介紹下怎麼使用Express和Session實現登入驗證,具體實作程式碼是什麼?一起來了解下。
1. 寫在前面
當我們登入了一個網站,在沒有登出登入的情況下,我們關閉了這個網站 ,過一段時間,再次打開這個網站,依然還會是登入狀態。這是因為,當我們登入了一個網站,伺服器會保存我們的登入狀態,直到我們退出登錄,或儲存的登入狀態過期。那伺服器是透過什麼儲存我們的登入狀態的呢?答案就是 Session ,服務透過 Session 能夠記錄每個客戶端連線的狀態。關於 Session 的原理,在這就不多說了,本文主要介紹在 Express 框架中,如何使用 Session 來實現用戶登入身份驗證。
2. 環境配置
在Node 環境中, 並沒有整合 Express 和 Session 的函式庫,因此需要進行安裝,先進入建立一個專案目錄,然後在專案根目錄中,利用下方指令安裝四個模組。
1) Express
這個模組能夠讓我們快速的建構一個 Web 開發框架。
2) body-parser
這個模組是 Express 模組的中間件,方便我們解析瀏覽器傳送來的 body 資料。
3) express-session
# 這個模組也是 Express 模組中間件,方便我們處理客戶端的 session。
4) ejs
該模組是一個渲染引擎。方便我們將後台變數資料綁定到前台頁面上。
安裝如下:
npm install express --save npm install body-parser --save npm install express-session --save npm install ejs --save
3. 登入與驗證
Session 能夠標記客戶端在伺服器上的狀態。利用這一點,我們能夠實現客戶端的登入驗證。 Session 登入驗證的流程大致為:客戶端若在未登入的狀態下請求主頁,那麼伺服器將該請求重定向到登入頁面;用戶端在登入後,伺服器需要記錄保存該用戶端的登入狀態,並給予一個活動期限,這樣下次伺服器請求首頁的時候,就能夠判斷該客戶端的登入狀態,若登入狀態有效,直接返回客戶端所需的頁面,否則重新導向至登入頁面。
對於 Session 的過期時間,如果沒有設定 Session 的過期時間,伺服器會根據自己配置中預設有效期,將長期不與伺服器互動的 Session 進行刪除。
下面貼出實例程式碼,介面比較簡單,伺服器後台程式碼註解寫的很清楚,因此就不再進行說明了。
專案的目錄結構如下:
登入頁面(login.html) 程式碼如下:
nbsp;html> <meta> <title>Title</title> <style> </style>
首頁(home.html)程式碼如下:
nbsp;html> <meta> <title>Title</title> <p>用户名:<span> </span> <a>退出登录</a></p>
伺服器(app.js)程式碼如下:
/** * Created by tjm on 9/7/2017. */ var express = require('express'); var app = express(); var session = require('express-session'); var bodyparser = require('body-parser'); // 下面三行设置渲染的引擎模板 app.set('views', dirname); //设置模板的目录 app.set('view engine', 'html'); // 设置解析模板文件类型:这里为html文件 app.engine('html', require('ejs').express); // 使用ejs引擎解析html文件中ejs语法 app.use(bodyparser.json()); // 使用bodyparder中间件, app.use(bodyparser.urlencoded({ extended: true })); // 使用 session 中间件 app.use(session({ secret : 'secret', // 对session id 相关的cookie 进行签名 resave : true, saveUninitialized: false, // 是否保存未初始化的会话 cookie : { maxAge : 1000 * 60 * 3, // 设置 session 的有效时间,单位毫秒 }, })); // 获取登录页面 app.get('/login', function(req, res){ res.sendFile(dirname + '/login.html') }); // 用户登录 app.post('/login', function(req, res){ if(req.body.username == 'admin' && req.body.pwd == 'admin123'){ req.session.userName = req.body.username; // 登录成功,设置 session res.redirect('/'); } else{ res.json({ret_code : 1, ret_msg : '账号或密码错误'});// 若登录失败,重定向到登录页面 } }); // 获取主页 app.get('/', function (req, res) { if(req.session.userName){ //判断session 状态,如果有效,则返回主页,否则转到登录页面 res.render('home',{username : req.session.userName}); }else{ res.redirect('login'); } }) // 退出 app.get('/logout', function (req, res) { req.session.userName = null; // 删除session res.redirect('login'); }); app.listen(8000,function () { console.log('http://127.0.0.1:8000') })
到此,session 實作登入驗證就完成。上面的範例 session 是保存在服務記憶體中,當然還可以儲存在檔案或資料庫中,只需要配置 session 中間件即可。
app.use(session({ secret: 'secretkey', store: new MongoStore({ db: 'sessiondb' }) }));
我相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
#以上是Express Session實作登入驗證功能(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1
強大的PHP整合開發環境