Применить одну охрану к нескольким маршрутам в Nestjs - PullRequest
0 голосов
/ 30 мая 2018

Например: для применения одного промежуточного программного обеспечения к нескольким маршрутам, которые мы можем использовать:

export class UserModule {
    public configure(consumer: MiddlewaresConsumer) {
        consumer.apply(AuthMiddleware).forRoutes(
            { path: '/users', method: RequestMethod.GET },
            { path: '/users/:id', method: RequestMethod.GET },
            { path: '/users/:id', method: RequestMethod.PUT },
            { path: '/users/:id', method: RequestMethod.DELETE },
        );
    }
}

Я хотел бы применить AuthGuard к нескольким маршрутам, ¿Какова лучшая практика?спасибо ...

В настоящее время я использую один за другим декоратор внутри функции контроллера, как это,

@Get()
@UseGuards(AuthGuard('jwt'))
async findAll(@Request() request): Promise<User[]> {
      return await this.usersService.findAll();
}

, но я ищу отличную реализацию

1 Ответ

0 голосов
/ 30 мая 2018

У вас есть три возможных решения для установки защиты:

  • применить к методу (ваш пример)
  • применить к контроллеру
  • применить глобально

Применить к контроллеру:

@Controller('cats')
@UseGuards(RolesGuard)
export class CatsController {}

Глобальное применение защиты:

const app = await NestFactory.create(ApplicationModule);
app.useGlobalGuards(new RolesGuard());

Все примеры из документации охранников - https://docs.nestjs.com/guards

...