NextAuth no Next.js 14

Workshop

22 vídeos 03:35:45

Seção 01 | Introdução ao NextAuth.js

  1. 06:53
  2. 07:22
  3. 08:42
  4. 02:47
  5. 01:52
  6. 01:52

Seção 02 | Setup do Projeto

  1. 11:13
  2. 12:49

Seção 03 | Login com Credenciais

  1. 15:39
  2. 14:17
  3. 09:40
  4. 04:29
  5. 12:53
  6. 27:58
  7. 08:40

Seção 04 | Login com Github

  1. 18:12
  2. 06:12
  3. 12:27
  4. 04:24

Seção 05 | Login com Email

  1. 14:23

Seção 06 | Finalização

  1. 10:56
  2. 02:05
Workshops>NextAuth no Next.js 14>Login com Server Components

Login com Server Components

Nos aprofundamos em Server Components, modificando o botão de login para funcionar com ele. Criamos uma server action para validar o login, reutilizando funções do NextAuth na nossa lógica. Aprendemos como pegar dados de login usando form data e verificamos seu funcionamento.

Comentários

(4)
Fabrizio Feitosahá 3 meses
No momento de rodar e exibindo um erro o console dispatou alguns erros. Apareceu até um aviso no canto da tela. Pq não resolver? Senti que "Login com Server Components" ficou incompleto.
Roberto Cestarihá 3 meses

Fala Fabrizio! Obrigado pela mensagem!

De fato o erro que aparece no canto da tela é o erro que foi lançado pela falha de autenticação. Ele não deve aparecer em produção.

A forma como eu capturei o erro foi usando o error.tsx do próprio next.js. Essa é uma das duas formas recomendadas pela própria documentação - e vai ficar aparecendo o erro ali no canto mesmo 😞. A outra forma (que é mais elegante) é capturando sem "estourar" erro, mas envolveria um hook do Next.js (useFormState / useActionState) que traz um nível de complexidade que não gostaria nesse workshop.

Se você quiser ver como fazer dessa segunda forma, eu fiz exatamente isso na resolução do Mini Projeto de Server Actions (https://codante.io/mini-projetos/server-actions-no-nextjs), dá uma olhada lá!

De fato, talvez eu devesse comunicar de forma mais assertiva isso nesta aula! Um abraço! 😊

Fabrizio Feitosahá 3 meses
Entendi! Então, acho que seria melhor ficar usando Client Componets né? Seria mais simples para manipular as mensagens de erro direto no form (colocar uma mensagem alí) e eu posso usar um Zod no auth.ts para dar mais segurança. Seria isso ou teria alguma outra abordagem melhor?
Roberto Cestarihá 3 meses

Client components é mais fácil no sentido que já estamos acostumados a lidar com os erros usando React tradicional.

No server components para validarmos dessa forma precisaríamos utilizar esse hook useFormState/useActionState. O problema nem tanto é a complexidade do hook em si, mas ele ainda é muito recente e tem alguns pontos:

  1. Ele foi renomeado para useActionState. A versão canary do React já usa o novo nome. Mas a versão estável do Next.js ainda usa useFormState...
  2. Como o hook ainda está nos canais canary, talvez usar em produção possa ser um pouco precipitado (essa tem sido a grande crítica do Next nas últimas releases: eles soltam o next versão stable, mas com react versão canary...)