Không có sự khác biệt cơ bản nào giữa guard của microservices và guard của ứng dụng HTTP thông thường.
Sự khác biệt duy nhất là thay vì throw HttpException, bạn nên dùng RpcException.
Gợi ý Class RpcException được expose từ package @nestjs/microservices.
Gắn guard (Binding guards)
Ví dụ sau dùng một guard method-scoped. Giống như với ứng dụng dựa trên HTTP, bạn cũng có thể dùng guard controller-scoped (nghĩa là, thêm decorator @UseGuards() lên đầu class controller).
@UseGuards(AuthGuard)
@MessagePattern({ cmd: 'sum' })
accumulate(data: number[]): number {
return (data || []).reduce((a, b) => a + b);
}
@UseGuards(AuthGuard)
@MessagePattern({ cmd: 'sum' })
accumulate(data) {
return (data || []).reduce((a, b) => a + b);
}