中間件回復說是在檢查鑒權后發送給控制器的。
>> middleware code
async use(req: any, res: any, next: () => void) {
const validate = await this.validate(req.cookies.token);
const permission = validate;
res.permission = permission;
req.permission = permission;
next();
}
>> controller code
root(@Res() res: Response, @Req() req: Request) {
if (res.permission) {
res.redirect("some where");
} else {
return res.render('some views')
}
}
錯誤資訊是 'Response<any, Record<string,any>>' 型別上不存在“Property 'permission' 但控制器不能使用它。你如何使用它?
對不起,我英語不好。
uj5u.com熱心網友回復:
對此的快速解決方法是定義您的自定義型別并擴展Request。
像這樣的東西
type MyResType = {
permission: boolean;
};
root(@Res() res: Response & MyResType) {
if (res.permission) {
return res.redirect("admin");
}
return res.render('404')
}
它不會抱怨這種型別,但不推薦在 Nestjs 中這樣做。除非真的有必要,否則你不應該使用@Res,裝飾器。@Res
我建議在過濾器旁邊使用警衛,這是有用的解釋。
至少這是正確的方法,并且測驗會更容易。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/432067.html
上一篇:圖片在本地顯示但不顯示在服務器上
下一篇:表達req.ip回傳物件
