黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線(xiàn):400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 Session應(yīng)用:驗(yàn)證用戶(hù)是否已登錄

Session應(yīng)用:驗(yàn)證用戶(hù)是否已登錄

更新時(shí)間:2021-08-04 16:29:53 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1571次

node.js中使用session實(shí)現(xiàn):驗(yàn)證用戶(hù)是否已登錄功能并維持用戶(hù)的在線(xiàn)狀態(tài)。

目的:用戶(hù)必須登錄才能進(jìn)入商品頁(yè)面和購(gòu)物車(chē)頁(yè)面,如果不經(jīng)過(guò)登錄就訪(fǎng)問(wèn)商品頁(yè)面會(huì)攔截并自動(dòng)跳轉(zhuǎn)到登錄頁(yè)面。

登錄session

用戶(hù)登錄后流程

登錄session

   用戶(hù)未登錄流程

為什么要用session:Http協(xié)議是無(wú)狀態(tài)的,也就導(dǎo)致服務(wù)器無(wú)法分辨是誰(shuí)瀏覽了網(wǎng)頁(yè)。為了維持用戶(hù)在網(wǎng)站的狀態(tài),比如登陸、購(gòu)物車(chē)等,出現(xiàn)了先后出現(xiàn)了四種技術(shù),分別是隱藏表單域、URL重寫(xiě)、cookie、session。session和cookie都是用來(lái)解決Http協(xié)議不能維持狀態(tài)的問(wèn)題,但是session只存儲(chǔ)在服務(wù)器端的,不會(huì)在網(wǎng)絡(luò)中進(jìn)行傳輸,所以較cookie來(lái)說(shuō),session相對(duì)安全一些。

結(jié)構(gòu)如圖:

登錄session

1.模擬數(shù)據(jù)庫(kù)user.json文件:

{ "username" : "admin", "password" : "admin" }

2.views目錄存放兩個(gè)ejs文件:

//login.ejs文件:
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
</head>
<body>
    <form action="/loginDo" method="post">
        <ul>
            <li>用戶(hù)名:<input type="text" name="username" /></li>
            <li>用戶(hù)名:<input type="password" name="password" /></li>
            <li><input type="submit" value="登陸"/></li>
        </ul>
    </form>
</body>
</html>

//product.ejs文件:
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
</head>
<body>
    <p>歡迎您:<%=username%>瀏覽我的頁(yè)面。<a href="/out">退出登錄</a></p>
    <p>這是商品展示界面</p>
</body>
</html>

首先下載第三方模塊

npm install express--save

npm install express-session--save

npm install body-parser--save

2.核心app.js文件:

(1)引入相關(guān)模塊并設(shè)置中間件,設(shè)置模板引擎:

var express = require("express");
var app = express();
var user = require("./user.json");//引入模擬數(shù)據(jù)庫(kù)
//引入body-parser模塊并設(shè)置中間件,以便用req.body來(lái)獲取post的傳值
var bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
//引入express-session模塊并設(shè)置中間件
 var session = require("express-session");
app.use(session({
    secret : "nihao",  //加密session,隨便寫(xiě)
    cookie : {maxAge : 60*1000*30}, //設(shè)置過(guò)期時(shí)間
    resave : true,  //強(qiáng)制保存session 默認(rèn)為 true,建議設(shè)置成false
    saveUninitialized : false ////強(qiáng)制將未初始化的session存儲(chǔ) 默認(rèn)為true,建議設(shè)置成true
}));
app.set("view engine", "ejs");//設(shè)置模板引擎為ejs,默認(rèn)從views目錄下查找ejs文件

(2)設(shè)置用戶(hù)登錄頁(yè)面路由

app.get("/login", function(req, res){
    res.render("login.ejs"); //渲染登錄頁(yè)面
});
app.post("/loginDo", function(req, res){
    var usernaem = req.body.username;
    var password = req.body.password;
    if( usernaem === user.username || password === user.password){
        req.session.userinfo = usernaem; //設(shè)置session,表示用戶(hù)處在的登錄狀態(tài)
        //app.locals對(duì)象用于將數(shù)據(jù)傳入所有的渲染ejs模板中,用<%=username%>接收
        req.app.locals["username"] = usernaem; 
        res.redirect("/product");
    }else{
        res.send("<script>alert('登陸失敗!');location.href='/login';</script>");//用戶(hù)名或密碼不正確
    }
});

(3)使用session判斷用戶(hù)是否是登錄狀態(tài),true則允許訪(fǎng)問(wèn)商品頁(yè)面/false則跳轉(zhuǎn)到登錄頁(yè)面

app.use( function(req,res,next){
    if( req.session.userinfo ){
        next();
    }else{
        res.send("<script>alert('您還沒(méi)有登錄,請(qǐng)先登錄!');location.href='/login';</script>");
    }
} );

(4)設(shè)置商品頁(yè)面路由,用戶(hù)若想訪(fǎng)問(wèn)必需通過(guò)第三步的攔截

app.get("/product", function(req, res){
    res.render("product.ejs"); //渲染商品頁(yè)面
});//退出登錄
app.get( "/out", function( req, res ){
    req.session.destroy(); //銷(xiāo)毀session,退出登錄
    res.redirect("/login");
} );
//設(shè)置端口號(hào)
app.listen(8000, function(){
    console.log("success");
});

結(jié)束:

用戶(hù)若沒(méi)有登錄直接訪(fǎng)問(wèn)“商品頁(yè)面(/product)” ,就會(huì)進(jìn)行攔截提示并跳轉(zhuǎn)到“登錄頁(yè)面(/login)”,只有登錄以后才能訪(fǎng)問(wèn)“商品頁(yè)面”。

以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Session應(yīng)用:驗(yàn)證用戶(hù)是否已登錄",希望對(duì)大家有幫助,想了解更多可查看Session執(zhí)行原理。動(dòng)力節(jié)點(diǎn)在線(xiàn)學(xué)習(xí)教程,針對(duì)沒(méi)有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門(mén)到精通,主要介紹了一些Java基礎(chǔ)的核心知識(shí),讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 免费精品一区二区三区在线观看 | 午夜va| 国产成人高清视频免费播放 | 中文字幕亚洲一区二区va在线 | www色视频在线观看 www精品一区二区三区四区 | 成人动漫在线看 | 91免费精品视频 | 五月天婷婷免费视频观看 | 无遮挡免费视频 | 日本三级带日本三级带黄国产 | 久久精品国产曰本波多野结衣 | 色www永久免费视频 色www亚洲 | 欧美精品一区二区三区免费播放 | 欧美高清精品 | 不卡欧美 | 免费毛片网站在线观看 | 日韩高清成人毛片不卡 | 免费啪啪社区免费啪啪手机版 | 午夜性色吃奶添下面69影院 | 中文字幕精品在线视频 | 在线性爱视频 | 日本全身露裸无遮挡黄漫画 | 久久久久久精 | 黄色一级视频免费观看 | 亚洲欧美日韩在线不卡 | 奇米777狠狠色噜噜狠狠狠 | 狠狠色综合久久久久尤物 | 久久精品免费全国观看国产 | 人人爽视频 | 国产三级国产精品国产普男人 | 羞羞污视频 | 狠狠色视频 | 丝袜美女足淫美足美脚网站 | 日本高清中文字幕在线观穿线视频 | 国产精品午夜波多野结衣性色 | 亚洲国产成人精品91久久久 | 亚洲人成网站在线观看播放青青 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 一级做a爰片性色毛片黄书 一级做a爰片性色毛片16美国 | 欧美a视频在线观看 | 特黄特级高清免费视频毛片 |