使用egg.js中間件驗(yàn)證用戶請求
中間件在計(jì)算機(jī)軟件系統(tǒng)應(yīng)用中用途非常廣泛,一般用來攔截請求,從而進(jìn)行前置或者后置處理,例如安全校驗(yàn)、合法請求判斷和用戶身份驗(yàn)證等。本文將演示如何在egg.js框架中使用中間件來驗(yàn)證用戶的請求是否正確。
中間件在計(jì)算機(jī)軟件系統(tǒng)應(yīng)用中用途非常廣泛,一般用來攔截請求,從而進(jìn)行前置或者后置處理,例如安全校驗(yàn)、合法請求判斷和用戶身份驗(yàn)證等。本文將演示如何在egg.js框架中使用中間件來驗(yàn)證用戶的請求是否正確。
編寫user方法并通過中間件驗(yàn)證請求
在編寫user方法時,我們可以通過中間件來驗(yàn)證請求是否合法。以下是一個示例代碼:
// app/controller/home.js
'use strict';
const { Controller } require('egg');
class HomeController extends Controller {
async index() {
const { ctx } this;
'hi, eggjs!';
}
// 用戶個人中心
async user() {
const { ctx } this;
'hi, welcome user center!';
}
}
module.exports HomeController;
編寫check中間件
接下來,我們需要編寫一個名為check的中間件來檢查請求的合法性。以下是示例代碼:
// app/middleware/check.js
'use strict';
module.exports options gt; {
return async function check(ctx, next) {
// 獲取url傳來的token參數(shù)
const token ;
const sys_token 'test'; // 假設(shè)系統(tǒng)存儲的token
// 判斷token是否合法
if(sys_token ! token) {
401;
return { code: 'error', msg: 'token無效' };
}
// 放行
await next();
}
}
引入中間件并設(shè)置路由
在路由中,我們需要引入check中間件,并使用它來驗(yàn)證請求的合法性。以下是示例代碼:
// app/router.js
'use strict';
/
* @param {} app - egg application
*/
module.exports app gt; {
const { router, controller } app;
// 中間件
const ck ();
('/index', );
// 訪問用戶中心,中間件驗(yàn)證token是否合法
('/userinfo', ck, );
}
現(xiàn)在,可以啟動項(xiàng)目并測試中間件的功能了。
啟動項(xiàng)目
打開命令終端,切換至項(xiàng)目根目錄,并執(zhí)行以下命令啟動項(xiàng)目:
npm run dev
驗(yàn)證中間件
打開瀏覽器,在地址欄輸入以下URL進(jìn)行中間件驗(yàn)證的測試:
- 錯誤的token:http://127.0.0.1:7001/userinfo?tokentt2023
- 正確的token:http://127.0.0.1:7001/userinfo?tokentest
根據(jù)測試結(jié)果,如果token無效,則會提示"token無效";而如果token有效,則成功進(jìn)入個人中心頁面。通過封裝業(yè)務(wù)邏輯成中間件的方式,可以使代碼更簡潔且具有更強(qiáng)的擴(kuò)展性。