1

Por que não usei NextAuth e implementei JWT do zero no BloodLink

Essa decisão gerou mais questionamento do que qualquer outra no projeto. Então vou explicar o raciocínio.

O BloodLink tem dois tipos de usuário com comportamentos muito diferentes: quem cria campanhas (hospitais, famílias) e quem se candidata como doador. O fluxo de autenticação precisa refletir isso.

Por que não NextAuth

NextAuth é excelente para o caso padrão: login com Google, GitHub, email magico, sessão gerenciada. Se o seu projeto se encaixa nisso, use sem hesitar.

O BloodLink precisava de algumas coisas que tornariam o NextAuth mais complicado do que fazer do zero:

  • Tokens com payload customizado (tipo de usuário, permissões específicas por campanha)
  • Controle explícito sobre expiração e renovação de sessão
  • Lógica de autorização granular: o criador de uma campanha tem permissões diferentes de um doador inscrito na mesma campanha

O NextAuth resolve isso, mas com adaptadores e callbacks que eu precisaria entender a fundo de qualquer forma. A curva seria parecida.

O que eu fiz

JWT assinado com HS256, armazenado em cookie httpOnly com SameSite=Strict. Middleware no Next.js que valida o token e injeta o usuário no contexto da requisição. Refresh token com rotação.

Menos de 200 linhas no total.

O que eu abri mão

Login social. Não tem Google nem GitHub. Por enquanto não faz falta, mas é a limitação mais visível dessa escolha.

Se o projeto crescer e login social virar demanda real, vou precisar integrar. Mas construir para um requisito que não existe ainda não faz sentido.

Carregando publicação patrocinada...