🚀 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

  1. 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

  1. 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)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 19 PHP_UltronP1) e clique em Commit to main.
  2. 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:

  1. É o Laravel Sanctum. Gabarito da Prática 2:
  2. É o middleware auth:sanctum.

Capitulo Anterior | Proximo Capitulo