[TIL] NestJS 공부 33일차

권한

이번에 프로젝트 진행시에도 사용되는 기능이다. 사실 대부분의 사이트에서 있어야만하는 기능이긴하다. 학교에선 선생님과 학생, 회사에선 관리자와 회사원들의 목적이 다르기 때문이다. 하지만 나는 그런 기능을 잘 몰랐고 그냥 jwt에 역할을 추가해서 확인하는 방법을 선택했다. 다른 방법을 확인해보자.

RBAC(역할 기반 액세스 제어)

역할 및 권한에 대한 제어 매커니즘으로 가드를 사용하여 구현한다.
우선, 역할에 대한 enum을 만들자.
enums/role.enum.ts경로에 위 코드를 작성하자.

이 후, 만들어진 열거형 파일을 이용하여 데코레이터를 만들자.
decorator폴더 안에 roles.decorator.ts파일을 만들어서 @Roles데코레이터로 사용할 수 있게 만들자.

이제는 역할 비교를 할 수 있게 만드는 RolesGuard 클래스를 만들자.
안에 있는 canActicate()에서 관련 역할을 가지고 오고 권한이 맞는지 확인하는 것 같은데 우선 Reclector에 대해 확실히 짚고 넘어가야할 것 같다.

어쨌든 이걸 사용하려면 User클래스는 아래의 역할을 정해주고 클래스를 전역 선언해주면 사용할 수 있다.
Reflector는 내일 자세하게 공부해보자,

class User {
  // ...other properties
  roles: Role[];
}
providers: [
  {
    provide: APP_GUARD,
    useClass: RolesGuard,
  },
],

좋은 웹페이지 즐겨찾기