使用egg.js中間件驗證用戶請求
中間件在計算機軟件系統(tǒng)應(yīng)用中用途非常廣泛,一般用來攔截請求,從而進行前置或者后置處理,例如安全校驗、合法請求判斷和用戶身份驗證等。本文將演示如何在egg.js框架中使用中間件來驗證用戶的請求是否正確。
中間件在計算機軟件系統(tǒng)應(yīng)用中用途非常廣泛,一般用來攔截請求,從而進行前置或者后置處理,例如安全校驗、合法請求判斷和用戶身份驗證等。本文將演示如何在egg.js框架中使用中間件來驗證用戶的請求是否正確。
編寫user方法并通過中間件驗證請求
在編寫user方法時,我們可以通過中間件來驗證請求是否合法。以下是一個示例代碼:
// 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中間件,并使用它來驗證請求的合法性。以下是示例代碼:
// app/router.js
'use strict';
/
* @param {} app - egg application
*/
module.exports app gt; {
const { router, controller } app;
// 中間件
const ck ();
('/index', );
// 訪問用戶中心,中間件驗證token是否合法
('/userinfo', ck, );
}
現(xiàn)在,可以啟動項目并測試中間件的功能了。
啟動項目
打開命令終端,切換至項目根目錄,并執(zhí)行以下命令啟動項目:
npm run dev
驗證中間件
打開瀏覽器,在地址欄輸入以下URL進行中間件驗證的測試:
- 錯誤的token:http://127.0.0.1:7001/userinfo?tokentt2023
- 正確的token:http://127.0.0.1:7001/userinfo?tokentest
根據(jù)測試結(jié)果,如果token無效,則會提示"token無效";而如果token有效,則成功進入個人中心頁面。通過封裝業(yè)務(wù)邏輯成中間件的方式,可以使代碼更簡潔且具有更強的擴展性。