[TIL]NestJS勉強10日目

1111 ワード

前の文章に続いて、Guardsを勉強しましょう.

バインドガード


pipeと同様に、controller-scopedmethod-scopedglobal-scopedを用いることができる.デコーダは、@useGuardscontoller-scopedを使用することができる.
このデコーダにはパラメータがあり,計算機でリストを分割することができる.
また,一度の宣言で設定をうまく適用できる.
@Controller('cats')
@UseGuards(RolesGuard)
export class CatsController {}
このようにすると、上記のコントローラが宣言したすべてのハンドルにguardが付着します.
1つの方法のみに適用することが望ましい場合、@UseGuardsのmethod levelに適用することができる.
また、global-guardを設定するには、useGlobalGuards()の方法を用いることができる.
const app = await NestFactory.create(AppModule);
app.useGlobalGuards(new RolesGuard());
名前の通り、アプリケーション全体で使用されるグローバルです.依存注入中に上記の方法が登録されている場合、依存注入を行うことができないため、以下の構成を使用する.
// app.module.ts
import { Module } from '@nestjs/common';
import { APP_GUARD } from '@nestjs/core';

@Module({
  providers: [
    {
      provide: APP_GUARD,
      useClass: RolesGuard,
    },
  ],
})
export class AppModule {}