//app.module.ts
@Module({
imports: [
UserModule,
],
controllers: [],
providers: [],
})
export class AppModule {
}
// 다른 파일, user.module.ts
@Module({
controllers: [UserController],
providers: [UserService],
})
export class LoginModule {
}
https://www.daleseo.com/nestjs-guards/
@Injectable()
export class CookieAuthGuard implements CanActivate {
constructor(private readonly redisService: RedisService) {}
async canActivate(context: ExecutionContext): Promise<boolean> {
const request = context.switchToHttp().getRequest<Request>();
const sid = request.cookies['sessionId'];
const loginId = await this.redisService.redisClient.get(sid);
if (!loginId) {
throw new UnauthorizedException('인증되지 않은 요청입니다.');
}
request['user'] = { loginId };
return true;
}
}