日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Express中间件的应用-路由保护(登录限制)、网站维护、页面404

發布時間:2025/3/19 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Express中间件的应用-路由保护(登录限制)、网站维护、页面404 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景

Node的Web應用框架Express的簡介與搭建HelloWorld:

Node的Web應用框架Express的簡介與搭建HelloWorld_霸道流氓氣質的博客-CSDN博客

Express的基本路由實現對get和post等的請求和響應:

Express的基本路由實現對get和post等的請求和響應_霸道流氓氣質的博客-CSDN博客

Express中app.use中間件的用法-匹配所有的請求方式:

Express中app.use中間件的用法-匹配所有的請求方式_霸道流氓氣質的博客-CSDN博客

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi?
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

路由保護

客戶端在訪問需要登錄的頁面時,可以先通過中間件判斷用戶是否登錄,如果未登錄則攔截請求,直接響應,禁止用戶進入需要登錄的頁面。

實現如果沒有登錄則不不能訪問/admin,只有登錄成功后才能訪問/admin

修改app.js,使用app.use中間件,這里直接使用變量isLogin作為是否登錄的判斷條件

首先是未登錄狀態下

app.use('/admin',(req,res,next)=>{let isLogin =false;if(isLogin){//讓請求繼續向下執行next()}else{res.send("您還沒有登錄,不能訪問/admin這個頁面");} })app.get('/admin', function (req, res) {res.send('您已經登錄,可以訪問當前頁面') })

判斷邏輯為如果登錄則繼續往下執行,否則給一個響應不能往下執行。

完整示例代碼

const express = require('express') const app = express()app.use('/admin',(req,res,next)=>{let isLogin =true;if(isLogin){//讓請求繼續向下執行next()}else{res.send("您還沒有登錄,不能訪問/admin這個頁面");} })app.get('/admin', function (req, res) {res.send('您已經登錄,可以訪問當前頁面') })app.listen(3000, function () {console.log('Example app listening on port 3000!') })

在VSCode下新建終端或者在項目目錄下打開命令行輸入

node app.js

打開瀏覽器訪問

http://localhost:3000/admin

然后將isLogin修改為true,即登錄成功狀態下,重啟項目,然后重新訪問

網站維護

網站維護公告,在所有路由的最上面定義接受所有請求的中間件,直接為客戶端做出響應,網站正在維護中。

所以要將其放在所有路由的最上面

//網站維護公告 app.use((req,res,next)=>{res.send("當前網站正在維護中..."); })

可以看到沒有執行next方法,所有不會往下執行。

完整示例代碼

const express = require('express') const app = express()//網站維護公告 app.use((req,res,next)=>{res.send("當前網站正在維護中..."); })app.use('/admin',(req,res,next)=>{let isLogin =true;if(isLogin){//讓請求繼續向下執行next()}else{res.send("您還沒有登錄,不能訪問/admin這個頁面");} })app.get('/admin', function (req, res) {res.send('您已經登錄,可以訪問當前頁面') })app.listen(3000, function () {console.log('Example app listening on port 3000!') })

此時再請求任何路由

自定義404頁面

需要在匹配所有的路由之后,如果沒有相應的路由則提示404,所以此中間件的位置應該放在最后面。

//自定義404頁面 app.use((req,res,next)=>{//響應404狀態碼并返回響應res.status(404).send("當前頁面不存在......"); })

完整示例代碼

const express = require('express') const app = express()//網站維護公告 // app.use((req,res,next)=>{ //?? res.send("當前網站正在維護中..."); // })app.use('/admin',(req,res,next)=>{let isLogin =true;if(isLogin){//讓請求繼續向下執行next()}else{res.send("您還沒有登錄,不能訪問/admin這個頁面");} })app.get('/admin', function (req, res) {res.send('您已經登錄,可以訪問當前頁面') })//自定義404頁面 app.use((req,res,next)=>{//響應404狀態碼并返回響應res.status(404).send("當前頁面不存在......"); })app.listen(3000, function () {console.log('Example app listening on port 3000!') })

此時啟動項目,如果訪問存在的路由

如果訪問不存在的路由

總結

以上是生活随笔為你收集整理的Express中间件的应用-路由保护(登录限制)、网站维护、页面404的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。