node.js - Opțiunea .exclude din middleware-ul Nest JS nu blochează middleware-ul pentru rutele excluse
Încerc să exclud câteva rute pentru middleware. Opțiunea .exclude nu funcționează. În schimb, middleware-ul este aplicat și pentru rutele excluse
Acesta este codul pentru Middleware
Acesta este codul pentru Modulul Utilizator
Acesta este codul pentru controlerul utilizator
Cred că codul meu ar trebui să blocheze middleware-ul pentru ruta GET 'users'... dar permite middleware-ul pentru ruta blocată.
Răspuns #1
asta funcționează:
consumer
.apply(CheckRoleMiddleware)
.exclude(
{ path: '/page', method: RequestMethod.GET }
).forRoutes({path: '*', method: RequestMethod.ALL})
Calea completă era /api/page, dar dacă o foloseam la exclude, nu funcționa. Așa că am folosit calea relativă '/page' în loc de cea absolută '/api/page', cea absolută nu funcționa.
la main.ts a fost definit
app.setGlobalPrefix('api');
Răspunsul #2
Adăugarea unui prefix pentru a exclude calea rutei ar trebui să rezolve problema ta.
În exemplul de mai jos definesc un prefix global ('/api/v1'), așa că acum, când vreți să excludeți un traseu, aplicația scrie calea completă (inclusiv toate prefixele) către acel traseu:
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer);
{consumer
.apply(LoggerMiddleware)
.exclude(
// 'api/v1' prefix to that route
{ path: 'api/v1/user', method: RequestMethod.POST },
)
.forRoutes(UserController);
}
};


