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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET中序列化与反序列化-以显示
- 下一篇: Express中错误处理中间件的使用