auth.middleware.ts
....
@Injectable()
export class AuthMiddleware implements NestMiddleware {
constructor(
private readonly jwtService: JwtService,
@Inject(CACHE_MANAGER) private readonly cacheManager: Cache,
) {}
async use(req: any, res: any, next: (error?: any) => void) {
const { accessToken, refreshToken } = req.cookies;
...
먼저 미들웨어를 작성합니다 // 프로젝트에서 사용한 인증 미들웨어
app.module.ts
import { AuthMiddleware } from './auth/auth.middleware';
미들웨어를 임포트 해줍니다
// 미들웨어를 작성하는 공간
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(AuthMiddleware) // 인증미들웨어 전역 적용
}
configure() 메소드를 사용해 미들웨어를 설정해주는 공간을 만들어줍니다.
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(AuthMiddleware)
.exclude({ path: 'camps', method: RequestMethod.GET })
);
}
exclude() 메소드를 사용해 특정 경로를 제외할 수 있습니다.
예시로는 camps 경로의 모든 GET 메소드를 제외했습니다. POST, DELETE, PUT 등 다른 메소드도 가능합니다.
ALL 메소드로 모든 메소드를 제외할 수도 있습니다.
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(AuthMiddleware)
.forRoutes(
{ path: 'auth/log-out', method: RequestMethod.POST },
{ path: 'auth/withdrawal', method: RequestMethod.DELETE },
CampController,
CouponController,
);
}
forRoutes() 메소드를 사용해 특정 경로를 지정할 수 있습니다.
사용방법은 exclude() 메소드와 같습니다.
여기서는 직접 경로 설정 이외에 컨트롤러 자체를 추가했습니다.
'내일배움캠프 노드 4기 > Today I Learned' 카테고리의 다른 글
[Nest.js][TypeORM] 시드 만들기 (0) | 2023.03.09 |
---|---|
[Nest.js] lodash 모듈을 못 불러와요 (0) | 2023.02.21 |
[Nest.js] DTO (0) | 2023.02.16 |
[Nest.js] 게시판 만들기 (0) | 2023.02.15 |
[Nest.js] IoC와 DI (0) | 2023.02.10 |