Nest.js: добавьте стратегию паспорта ко всем маршрутам
Я пытаюсь добавить стратегию паспорта jwt ко всем маршрутам, начинающимся с /api
.
Я не могу найти в документации ни одного примера этого. Я не хочу добавлять@UseGuards
декоратор в каждой конечной точке.
Благодарность!
1 ответ
Невозможно сразу привязать охранника только к определенному маршруту, однако можно было бы добавить некоторую логику к охраннику, чтобы проверить, находитесь ли вы на определенном маршруте (или нет), и запустить логику (или короткое замыкание). Что-то вроде
@Injectable()
export class APIGuard implements CanActivate {
canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {
const req = context.switchToHttp().getRequest();
if (!req.url.contains('api')) {
return true;
}
const isValid = this.checkValidity(context);
return isValid;
}
private isvalid(context: ExecutionContext) {
// do your logic. Only brought to a separate method to keep the `canActivate` cleaner
}
}