10.6 - Controle de Acesso - Autenticação
E aí, agente da segurança digital! Já aprendemos a guardar e manipular dados com SQL e a manter tudo organizado com Constraints. Mas será que qualquer um pode chegar e mexer nos nossos dados secretos? Numa aplicação real, isso seria um desastre!
Por isso, precisamos de um porteiro para o nosso QG Supabase — alguém que controle quem entra, quem sai e o que cada pessoa pode fazer lá dentro. Esse porteiro digital é o sistema de Autenticação e Autorização.
E a boa notícia? O Supabase já traz esse porteiro pronto e fácil de usar — um dos seus superpoderes! ✨
A Missão: Quem Pode Entrar no Clube?
Autenticação é o processo de provar QUEM você é. Como mostrar sua identidade na portaria: “Sou o João” e provar isso com uma senha, login social (Google, GitHub), código por SMS, etc.
Autorização é o que determina O QUE você pode fazer depois de autenticado. Ok, você é o João, mas pode apagar posts dos outros ou só ver os seus?
O Supabase Auth cuida principalmente da Autenticação, facilitando a criação de:
Cadastro (Sign Up): Para novos usuários criarem conta.
Login (Sign In): Para usuários entrarem na conta.
Logout (Sign Out): Para saírem da conta.
Recuperação de Senha: Aquele “Esqueci minha senha”.
Login com Redes Sociais (OAuth): Google, GitHub, Facebook, etc.
Login Mágico (Magic Link): Entrar só clicando num link por email, sem senha.
Login por Telefone (SMS): Usando número de celular.
Tudo pronto pra você usar sem construir do zero!
Como Funciona o Supabase Auth (Visão Geral)
O Supabase cria a tabela
auth.users
no seu banco para guardar os dados dos usuários (ID, email, criação, etc.). Você não mexe nela diretamente com SQL comum.Ele oferece uma API (funções no código) para interagir com o sistema, como
supabase.auth.signUp()
,signInWithPassword()
,signInWithOAuth()
.Quando o usuário faz login, o Supabase gera um token chamado JWT (crachá digital temporário) para provar que está autenticado.
O ID do usuário pode ser usado como chave estrangeira nas suas tabelas (posts, tarefas, perfis) para relacionar dados ao usuário.
Ativando e Configurando o Auth no Supabase
No painel do projeto, vá em Authentication (ícone de chave/usuário 🔑).
Em Providers, escolha os métodos de login que deseja ativar:
Email e senha (básico, geralmente ativado por padrão).
Telefone (SMS).
OAuth (Google, GitHub, Facebook, Apple, etc.).
Customize os emails enviados para confirmação, recuperação, etc.
Ajuste as configurações gerais: confirmação de email, URLs de redirecionamento, etc.
Segurança no Nível da Linha: Row Level Security (RLS) 🛡️👀
Usuário autenticado, mas como garantir que ele só veja e modifique seus próprios dados?
O segredo é o Row Level Security (RLS), uma ferramenta poderosa do PostgreSQL que o Supabase facilita muito.
Com o RLS você cria políticas de segurança para as tabelas, definindo regras como:
Usuários só podem ver os posts cujo
usuario_id
é igual ao seu próprio ID (auth.uid()
).Só podem inserir, atualizar ou apagar seus próprios dados.
Exemplo simplificado:
sqlCopiarEditarCREATE POLICY "Usuários veem seus próprios posts"
ON posts
FOR SELECT
USING (auth.uid() = usuario_id);
Com essa regra, a Maria só vê os posts dela, e não os dos outros.
Você cria e gerencia essas políticas na aba Authentication -> Policies no painel Supabase.
Resumo dos Superpoderes de Acesso
Supabase Auth: controla quem entra (cadastro, login, social).
Row Level Security (RLS): controla o que cada usuário pode acessar e modificar.
Juntos, formam a base da segurança da sua aplicação.
Last updated