app.module.ts에 적용
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(YourMiddleware)
.exclude(
{ path: 'auth/(.*)', method: RequestMethod.ALL }
)
.forRoutes('*'); // 모든 경로 적용
}
}
token.middleware.ts 스크립트
@Injectable()
export class TokenMiddleware implements NestMiddleware {
constructor(
// service 또는 repository 의존성
) { }
async use(req: Request, res: Response, next: NextFunction) {
// 미들웨어 로직
}
}
위와 같이 미들웨어를 적용할 수 있다.
개발 중 생긴 문제
access token이 만료되었다는 오류 메시지
"!accessToken"과 "만료된 access token"은 다른 것이었다...
access token이 없을 때와 만료되었을 때 모두 새로운 access token을 재발급해줬다.