🚀 Capítulo 19: Criando a Inteligência da API (Tema: Vingadores - Ultron Parte 1)
NOTE
Este capítulo utiliza a temática de Ultron para explicar a Autenticação de APIs no Laravel usando Tokens. Proteja a inteligência do seu sistema!
1. 🎯 Objetivo da Aula
Compreender como funciona a autenticação baseada em Tokens para APIs Rest no Laravel, conhecendo o pacote Laravel Sanctum para proteger as rotas do sistema.
2. 🏢 O Cenário Prático (Seu Desafio)
A inteligência artificial Ultron está tentando invadir os sistemas globais. Para impedir que ele assuma o controle de todas as máquinas, os Vingadores precisam criar um protocolo de segurança nível máximo. Cada herói ou máquina aliada que quiser acessar o banco de dados central precisa apresentar uma “Chave de Acesso Digital” única (um Token). Se o Token for válido, o acesso é liberado!
No desenvolvimento de APIs (onde não temos uma tela visual para o usuário digitar login e senha toda vez):
- O usuário envia o login e senha uma vez.
- O servidor valida e devolve um texto gigante aleatório (o Token).
- A partir daí, o usuário envia esse Token no cabeçalho de todas as próximas requisições. Seu desafio é gerar e validar esses tokens!
🧠 Fundamentos: A Teoria Traduzida
🔑 1. O que é o Laravel Sanctum?
É o pacote oficial e mais simples do Laravel para emitir tokens de API para os usuários. Ele já vem pré-instalado nas versões recentes do Laravel!
🏗️ 2. Gerando um Token:
Quando o usuário acerta a senha no Controller de Login, nós geramos o token para ele assim:
class AuthController {
public function login(Request $request) {
// 1. Valida os dados do usuário no banco...
$usuario = User::where('email', $request->email)->first();
// 2. Cria o token e pega o texto puro dele
$token = $usuario->createToken('chave-secreta')->plainTextToken;
// 3. Devolve o token para o usuário guardar
return response()->json(['token' => $token]);
}
}🛡️ 3. Protegendo a Rota:
Para dizer ao Laravel que uma rota só pode ser acessada por quem tem o token, usamos o middleware auth:sanctum:
// No arquivo routes/api.php
Route::get('/dados/secretos', function () {
return "Dados protegidos acessados com sucesso!";
})->middleware('auth:sanctum');4. 📖 Exemplo Guiado: O Protocolo Ultron
Para enviar o token via código (usando ferramentas como Postman or Insomnia), o usuário precisa colocar no cabeçalho (Header) da requisição:
Authorization: Bearer 1|abcdefghijklmnopqrstuvwxyz...O Laravel lê esse cabeçalho, descobre quem é o usuário e libera o acesso!
5. 🛠️ Prática Obrigatória 1: O Nome do Recurso
- Qual é o nome do pacote padrão do Laravel que usamos para gerar tokens simples de API?
6. 🛠️ Prática Obrigatória 2: Protegendo Rotas
- Qual é o nome do middleware que devemos aplicar a uma rota para que ela exija o token do Sanctum?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 19 PHP_UltronP1) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
spec_backend_com_php_e_laravel/
├── capitulos/
│ └── capitulo_19_ultron_p1.md💡 Checkpoint de Lógica
Os tokens de API funcionam como chaves físicas. Se alguém roubar o seu token, poderá acessar o sistema fingindo ser você até que o token seja revogado (cancelado) no banco de dados pelo administrador!
10. 🔥 Desafio de Fixação
Pesquise como revogar (deletar) o token atual do usuário no momento em que ele faz o logout da API.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- É o Laravel Sanctum. Gabarito da Prática 2:
- É o middleware
auth:sanctum.