π Supabase Auth: Setup Completo
Autenticacao nao e algo que voce implementa do zero em 2026. Supabase Auth resolve signup, login, logout, reset de senha e OAuth com provedores sociais em minutos. O resultado e um JWT que identifica o usuario em cada request ao seu backend.
π― Conceito Principal
Supabase Auth suporta tres metodos principais: email/password (classico, usuario cria conta com credenciais), magic link (email com link de acesso, sem senha) e social login (Google, GitHub, Discord via OAuth). Voce configura uma vez e o Supabase gerencia tokens, sessoes e refresh automaticamente.
- β’ createClient(): Inicializa o Supabase no frontend com a URL do projeto e a anon key. Essa instancia e usada em toda a aplicacao
- β’ Auth Hooks: onAuthStateChange() escuta mudancas de estado (login, logout, token refresh). Fundamental para atualizar a UI em tempo real
- β’ Session Management: Supabase gera um access_token (curta duracao, ~1h) e um refresh_token (longa duracao). O SDK renova automaticamente
π» Setup do Supabase Client
1. Instalar e configurar:
2. Signup com email/senha:
3. Login + Magic Link + OAuth:
4. Auth state listener:
π‘ Dica Pratica
Comece com email/senha + Google OAuth. Esses dois metodos cobrem 95% dos usuarios. Nao perca tempo configurando 10 provedores no MVP. Adicione GitHub se o publico for devs. O resto vem depois, quando voce tiver dados de quem realmente usa.
πͺͺ JWT Tokens e Sessoes
Quando o usuario faz login, o Supabase gera um JWT (JSON Web Token). Esse token e a "carteira de identidade digital" que viaja em cada request. Entender como ele funciona e onde armazenar e fundamental para seguranca.
π― Conceito Principal
Um JWT tem tres partes: header (algoritmo de assinatura), payload (dados do usuario: id, email, role, expiracao) e signature (prova de que ninguem adulterou). O backend verifica a assinatura sem consultar o banco a cada request.
- β’ Access Token: Curta duracao (~1 hora). Enviado no header Authorization de cada request. Se vazar, o dano e limitado pelo tempo
- β’ Refresh Token: Longa duracao (~30 dias). Usado para gerar novos access tokens sem pedir login novamente. Guardado com mais cuidado
- β’ httpOnly Cookies vs localStorage: Cookies httpOnly sao mais seguros (inacessiveis via JavaScript, protegem contra XSS). localStorage e mais simples mas vulneravel a XSS
π Anatomia de um JWT
π Onde Armazenar Tokens
httpOnly Cookies
- + Inacessivel via JavaScript (protege contra XSS)
- + Enviado automaticamente pelo browser
- + Padrao recomendado para producao
- - Precisa configurar CORS e SameSite
- - Mais complexo de implementar
localStorage
- + Simples de implementar
- + Funciona sem configuracao de server
- + Bom para MVPs e prototipos
- - Vulneravel a XSS (scripts maliciosos leem)
- - Nao recomendado para producao com dados sensiveis
π‘ Dica Pratica
No MVP, use o Supabase SDK no modo padrao (ele guarda tokens em localStorage automaticamente). Quando for para producao, migre para o @supabase/ssr package que usa httpOnly cookies com Next.js middleware. A migracao e simples e esta documentada.
π‘οΈ Protecao de Rotas
De nada adianta ter autenticacao se qualquer pessoa consegue acessar /dashboard digitando a URL no browser. Protecao de rotas garante que paginas privadas so sao acessiveis por usuarios logados, e redireciona o resto para o login.
π― Conceito Principal
Em Next.js, existem duas abordagens para proteger rotas: server-side (middleware que roda antes da pagina carregar) e client-side (componente wrapper que checa auth no browser). A melhor pratica e combinar as duas para seguranca em camadas.
- β’ Middleware (server-side): Roda no Edge antes de qualquer pagina. Checa o token no cookie e redireciona se invalido. Primeira linha de defesa
- β’ AuthProvider (client-side): Context wrapper que verifica sessao no browser. Mostra loading enquanto checa. Segunda camada de protecao
- β’ API Route Protection: Cada endpoint da API tambem precisa validar o token. Nunca confie apenas na protecao do frontend
π» Middleware Next.js para Protecao de Rotas
middleware.ts (na raiz do projeto):
β O que FAZER
- β Usar middleware server-side como primeira linha de defesa
- β Validar token tambem no backend (API routes)
- β Mostrar loading skeleton enquanto checa autenticacao
β O que NAO fazer
- β Confiar apenas em checagem client-side (JavaScript desabilitado = bypass)
- β Deixar API routes sem protecao (qualquer um chama direto)
- β Mostrar flash de conteudo protegido antes do redirect
π― Onboarding Flow
O usuario acabou de criar conta. E agora? Se ele cair numa tela vazia sem saber o que fazer, voce perdeu. Onboarding e o fluxo que guia o usuario do "acabei de registrar" ate o "entendi como funciona e tive valor". Quanto menor o time-to-value, melhor.
π― Conceito Principal
Um bom onboarding tem tres etapas: welcome screen (boas-vindas personalizada com o nome do usuario), profile setup (coletar informacoes minimas para personalizar a experiencia) e first action guide (levar o usuario a fazer a primeira acao de valor no produto).
- β’ Time-to-Value: Tempo entre o registro e o primeiro momento "aha" do usuario. Para apps de IA, isso e geralmente a primeira resposta util da IA
- β’ Progressive Profiling: Nao peca tudo no registro. Colete nome e email no signup. Pergunte funcao e objetivo no onboarding. Descubra preferencias com o uso
- β’ Checklist Pattern: Mostra uma lista de 3-5 acoes para completar. Progresso visual motiva. Notion, Linear e Slack usam esse padrao
πΊοΈ Fluxo de Onboarding Recomendado
Welcome
Boas-vindas + nome do usuario
Profile
Funcao, objetivo, preferencias
First Action
Guia para primeira conversa com IA
Dashboard
Pronto para usar o produto
π» Detectar Primeiro Acesso
π Dados de Onboarding
- β’ 63% dos usuarios consideram onboarding como fator decisivo para continuar usando um produto
- β’ 3-5 passos e o numero ideal para um onboarding. Mais que isso e abandono cresce exponencialmente
- β’ Primeira acao em <2 min: Se o usuario nao faz nada de valor nos primeiros 2 minutos, chance de churn sobe 40%
π‘ Dica Pratica
A melhor forma de onboarding em apps de IA e levar o usuario a fazer a primeira pergunta. Welcome screen com nome, um campo de input grande e sugestoes de perguntas prontas como "Me ajude a escrever um email" ou "Resuma este documento". O "aha moment" e a primeira resposta da IA.
π Social Login e OAuth
"Entrar com Google" nao e luxo, e obrigacao em 2026. Usuarios nao querem criar mais uma senha. Social login reduz friccao, aumenta conversao e pega dados verificados (nome, foto, email confirmado) de graca. OAuth e o protocolo por tras disso.
π― Conceito Principal
OAuth 2.0 funciona assim: o usuario clica "Entrar com Google" > e redirecionado para o Google > autoriza o acesso > Google manda um code de volta para sua app > seu backend troca o code por tokens do usuario. O Supabase faz tudo isso automaticamente.
- β’ Google OAuth: Mais usado. Configure no Google Cloud Console > Credentials > OAuth 2.0. Adicione o redirect URL do Supabase. 5 minutos de setup
- β’ GitHub OAuth: Ideal para produtos dev-focused. Settings > Developer Settings > OAuth Apps. Mesmo padrao de redirect
- β’ Account Linking: Quando o mesmo email existe com email/senha E Google login. Supabase pode linkar automaticamente ou criar contas separadas (configuravel)
π» Implementando Google + GitHub Login
Componente de Social Login:
Auth Callback Route (app/auth/callback/route.ts):
π‘ Dica Pratica
Habilite "auto-link" no Supabase Auth settings. Isso faz com que se alguem registrar com email/senha e depois tentar logar com Google (mesmo email), as contas sejam vinculadas automaticamente. Sem isso, o usuario fica preso com "email ja existe".
π οΈ Exercicio: Auth Completo
Hora de montar tudo. Neste exercicio voce vai implementar o fluxo completo de autenticacao: registro, login, logout, protecao de rotas e uma tela de onboarding para novos usuarios. E a base sobre a qual todo o resto do SaaS sera construido.
Exercicio: Fluxo de Auth Completo
Tempo estimado: 35-50 minutos
Setup Supabase Auth
Criar projeto no Supabase, configurar variaveis de ambiente e instalar o SDK:
Pagina de Registro + Login
Criar formularios com email/senha e botoes de Google/GitHub OAuth. Tratar erros de validacao e feedback visual:
Middleware de Protecao
Criar middleware.ts que protege /dashboard/* e redireciona usuarios nao autenticados para /login. Redirecionar usuarios logados que acessam /login para /dashboard.
Dashboard Protegido
Criar pagina /dashboard que mostra dados do usuario logado (nome, email, avatar). Botao de logout funcional. Se nao logado, redireciona.
Tela de Onboarding
Detectar primeiro acesso via flag no banco. Mostrar onboarding com welcome, profile setup e sugestao de primeira acao. Marcar como completado apos finalizar.
β Criterios de Sucesso
π Bonus
Adicione password strength indicator no formulario de registro e GitHub login como segundo provedor. Implemente email de confirmacao customizado via Supabase email templates.
π Resumo do Modulo
Proximo Modulo:
Modulo 3.3 - Dashboard e Interface Principal. Layout design para apps com IA, componentes essenciais e responsividade.