Autenticação no Supabase com supabase-js v2

Guia de Supabase Auth

Autenticação no Supabase: e-mail, magic link, OAuth, RLS | We.Inc

Código supabase-js v2 que funciona para e-mail e senha, magic links, login OAuth, listeners de sessão e logout, além de políticas de row level security que usam auth.uid().

O Supabase Auth faz o login das pessoas com e-mail e senha, magic links de uso único, códigos por telefone ou provedores OAuth como o GitHub, tudo pelo objeto supabase.auth do supabase-js. Cada login gera uma sessão cujo token chega ao seu banco de dados, onde políticas de row level security comparam auth.uid() com uma coluna user_id para decidir o que aquela pessoa pode ler.

Métodos de login e a chamada de cada um

A autenticação é a parte de um projeto Supabase que as pessoas mais configuram errado: o login funciona, mas os dados ficam totalmente expostos ou o servidor confia em um cookie em que não deveria. Escolha um método abaixo para pegar o código dele e depois siga a seção de políticas para que cada pessoa veja só as próprias linhas.

Perguntas frequentes

O magic link do Supabase é a mesma coisa que OTP?

Os dois começam pelo signInWithOtp. No e-mail, a mensagem traz um link quando o template usa a URL de confirmação e um código quando usa o token. O login por telefone só aceita códigos, por SMS ou WhatsApp.

Como adiciono login com Google ou GitHub?

Ative o provedor no dashboard com o client ID e o secret fornecidos por ele e depois chame signInWithOAuth com o nome do provedor e um endereço redirectTo opcional. A pessoa volta para o seu site já logada.

Como sei quando um usuário entra ou sai?

Registre o onAuthStateChange. Ele informa eventos como INITIAL_SESSION, SIGNED_IN, SIGNED_OUT, TOKEN_REFRESHED, USER_UPDATED e PASSWORD_RECOVERY e retorna uma inscrição que você cancela quando o componente é desmontado.

Por que usuários logados não veem nada depois que ativei o RLS?

Com o row level security ativado, a tabela nega tudo até que uma política permita. Adicione uma política de select para o papel authenticated que compare (select auth.uid()) com a coluna do dono.

Devo usar Supabase Auth ou Firebase Auth?

Os dois cobrem os métodos comuns. A diferença maior é o banco de dados por baixo; a nossa comparação Supabase vs Firebase analisa essa escolha em detalhes.

Sessões e tokens

O row level security é a verdadeira tranca

Políticas que usam auth.uid()

Cada pessoa lê e grava só as próprias notas

Rode no editor SQL. O valor padrão preenche user_id a partir do token, e o with check impede que alguém insira linhas para outro usuário.

E-mail e senha

Crie a conta e depois faça login. Com a confirmação ativada, data.session é null até o link do e-mail ser clicado.

Magic link

Envia um e-mail cujo link faz o login da pessoa e a leva para o endereço de redirecionamento.

OAuth (GitHub)

Redireciona para o provedor e de volta. Antes, ative o provedor e configure as chaves dele no dashboard.

Listener de sessão e logout

Mantém a interface em sincronia com a sessão e remove o listener quando você terminar.

Código para cada método de login

Escolha um método de login

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site