<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Express + Session 實現登錄驗證功能

        來源:懂視網 責編:小采 時間:2020-11-27 22:30:45
        文檔

        Express + Session 實現登錄驗證功能

        Express + Session 實現登錄驗證功能:1. 寫在前面 當我們登錄了一個網站,在沒有退出登錄的情況下,我們關閉了這個網站 ,過一段時間,再次打開這個網站,依然還會是登錄狀態。這是因為,當我們登錄了一個網站,服務器會保存我們的登錄狀態,直到我們退出登錄,或者保存的登錄狀態過期。那服務器
        推薦度:
        導讀Express + Session 實現登錄驗證功能:1. 寫在前面 當我們登錄了一個網站,在沒有退出登錄的情況下,我們關閉了這個網站 ,過一段時間,再次打開這個網站,依然還會是登錄狀態。這是因為,當我們登錄了一個網站,服務器會保存我們的登錄狀態,直到我們退出登錄,或者保存的登錄狀態過期。那服務器

        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) 代碼如下:

        <!DOCTYPE html>
        <html lang="en">
        <head>
         <meta charset="UTF-8">
         <title>Title</title>
         <style type="text/css">
        
         </style>
        </head>
        <body>
         <form action="/login" method="POST">
         用戶名: <input type="text" name="username"/> <br>
         密碼: <input type="password" name="pwd"/>
         <input type="submit" value="Submit"/>
         </form>
        </body>
        </html>

        主頁(home.html)代碼如下:

        <!DOCTYPE html>
        <html lang="en">
        <head>
         <meta charset="UTF-8">
         <title>Title</title>
        </head>
        <body>
         <div>用戶名:<span><%= username %> </span> <a href="/logout" rel="external nofollow" >退出登錄</a></div>
        </body>
        </html>

        服務器(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'
         })
        }));

        上面的代碼則是將 session 保存到 MongoDB 數據庫,當然 Session 的配置還有一些,具體參考:

        https://www.npmjs.com/package/express-session

        總結

        以上所述是小編給大家介紹的Express + Session 實現登錄驗證功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Express + Session 實現登錄驗證功能

        Express + Session 實現登錄驗證功能:1. 寫在前面 當我們登錄了一個網站,在沒有退出登錄的情況下,我們關閉了這個網站 ,過一段時間,再次打開這個網站,依然還會是登錄狀態。這是因為,當我們登錄了一個網站,服務器會保存我們的登錄狀態,直到我們退出登錄,或者保存的登錄狀態過期。那服務器
        推薦度:
        標簽: 登錄 功能 認證
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产精品久久久久久久久久免费 | 日本牲交大片免费观看| 666精品国产精品亚洲| 免费av片在线观看网站| 亚洲Av无码精品色午夜| 精品亚洲永久免费精品| 亚洲A∨无码一区二区三区| 久热免费在线视频| 婷婷久久久亚洲欧洲日产国码AV| 免费国产午夜高清在线视频| 亚洲日韩图片专区第1页| 2022久久国产精品免费热麻豆| 亚洲网站在线播放| 国产三级在线观看免费| 香蕉视频亚洲一级| 亚洲七七久久精品中文国产| 中国国产高清免费av片| 亚洲免费视频网站| 免费看韩国黄a片在线观看| 日日摸日日碰夜夜爽亚洲| 在线日韩日本国产亚洲| 欧洲人免费视频网站在线| 亚洲a∨无码男人的天堂| 男女啪啪永久免费观看网站| 日日摸夜夜添夜夜免费视频| 亚洲成亚洲乱码一二三四区软件| 国产成人精品免费视频大全麻豆| 亚洲日韩AV一区二区三区四区| 亚洲精品tv久久久久| 84pao强力永久免费高清| 亚洲一级特黄特黄的大片 | 国产精品亚洲αv天堂无码| a级毛片高清免费视频就| 亚洲国产韩国一区二区| 暖暖日本免费在线视频| 中文在线观看永久免费| 91午夜精品亚洲一区二区三区| 哒哒哒免费视频观看在线www| 免费在线看黄网站| 综合一区自拍亚洲综合图区| 亚洲热线99精品视频|