ANÚNCIO

~/questoes/programacao

Qual é o papel de um Guard no Nest.js?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Questão 1 Não respondida

Qual é o papel de um Guard no Nest.js?

Aula de referência Nest.js e API REST: Autenticação e Autorização na Prática
Para fixar

O Papel dos Guards no Nest.js

Conceito central

Guards são componentes do Nest.js que atuam como um filtro de segurança, interceptando requisições antes de chegarem ao controlador. Eles verificam condições específicas e decidem se a requisição será processada ou rejeitada, funcionando como um porteiro da sua API.

Por que essa resposta faz sentido

Guards interceptam requisições no momento certo do pipeline, antes do controlador receber a solicitação. Dessa forma, você consegue validar autenticação, autorização e outras condições de negócio de forma centralizada e reutilizável em múltiplas rotas.

Armadilhas comuns

  • Confundir Guards com Middleware: ambos interceptam requisições, mas Guards são específicos do Nest.js e trabalham após o middleware, tendo acesso ao contexto da aplicação.
  • Pensar que Guards modificam respostas: Guards apenas decidem se deixam a requisição passar ou a bloqueiam. Modificar dados da resposta é tarefa de Interceptadores.
  • Usar Guards para todas as validações: Guards são ideais para autenticação e autorização, mas validações de dados de entrada devem usar Pipes e DTOs para manter código limpo.

Entenda as alternativas

A

Essa é a definição correta. Guards são executados antes do controlador receber a requisição, permitindo aceitar ou rejeitar o acesso baseado em regras como autenticação ou permissões.

B

Guards não modificam respostas HTTP automaticamente. Eles trabalham na entrada da requisição, não na saída. Modificar respostas é função de Interceptadores, não Guards.

C

Registrar requisições para auditoria não é responsabilidade de Guards. Essa tarefa pertence aos Interceptadores ou Middleware, que podem implementar logging estruturado de toda a comunicação.

D

Guards não armazenam dados sensíveis. O armazenamento seguro de senhas ocorre na camada de serviço ou banco de dados usando hash criptográfico (bcrypt), não em Guards.

Dica prática: Na prática, crie um AuthGuard customizado que valida o token JWT extraído do header Authorization. Use o decorador @UseGuards(AuthGuard) nas rotas que precisam de proteção, economizando repetição de código e centralizando a lógica de segurança.

Revise pensando: Se um usuário tenta acessar uma rota protegida sem token válido, em qual momento do fluxo da requisição o Guard intervém para bloquear o acesso?