🧩 Exercícios: Autenticação de API com Laravel Sanctum
Spec Backend Com Php E Laravel • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 09.1 — Geração de Personal Access Tokens com createToken()
Contexto: Geração de Personal Access Tokens com createToken() no contexto de Autenticação de API com Laravel Sanctum.
Requisitos de Execução:
- Configurar trait
HasApiTokensno modelUsere emitir token no login.
Resultado Esperado
Token de texto puro retornado com hash SHA-256 gravado na tabela `personal_access_tokens`.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_1_SeuNome - Envie na tarefa:
Atividade Cap 09 - Autenticação de API com Laravel Sanctum
🔑 Gabarito de Código & Solução Comentada
<?php
// app/Http/Controllers/Api/AuthController.php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
public function login(Request $request)
{
$user = User::where('email', $request->email)->first();
if (!$user || !Hash::check($request->password, $user->password)) {
return response()->json(['erro' => 'Credenciais inválidas'], 401);
}
$token = $user->createToken('api-token')->plainTextToken;
return response()->json(['token' => $token, 'token_type' => 'Bearer']);
}
}
🔍 Nível 2: Prática
Problema 09.2 — Proteção de Rotas com Middleware auth:sanctum
Contexto: Proteção de Rotas com Middleware auth:sanctum no contexto de Autenticação de API com Laravel Sanctum.
Requisitos de Execução:
- Proteger grupo de rotas com
Route::middleware('auth:sanctum')->group(...).
Resultado Esperado
Acesso autorizado apenas para requisições contendo Bearer Token válido.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_2_SeuNome - Envie na tarefa:
Atividade Cap 09 - Autenticação de API com Laravel Sanctum
🔑 Gabarito de Código & Solução Comentada
<?php
// routes/api.php
Route::middleware('auth:sanctum')->group(function () {
Route::get('/user', function (Request $request) {
return $request->user();
});
Route::post('/logout', [AuthController::class, 'logout']);
});
⚡ Nível 3: Integração
Problema 09.3 — Habilidades e Escopos de Token com tokenCan()
Contexto: Habilidades e Escopos de Token com tokenCan() no contexto de Autenticação de API com Laravel Sanctum.
Requisitos de Execução:
- Emitir token com permissões restritas
createToken('app', ['produtos:read', 'produtos:write'])e validar comtokenCan().
Resultado Esperado
Habilidade 'produtos:write' verificada no controller.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_3_SeuNome - Envie na tarefa:
Atividade Cap 09 - Autenticação de API com Laravel Sanctum
🔑 Gabarito de Código & Solução Comentada
<?php
// app/Http/Controllers/Api/ProdutoController.php
public function store(Request $request)
{
if (!$request->user()->tokenCan('produtos:write')) {
return response()->json(['erro' => 'Token sem permissão de escrita'], 403);
}
return response()->json(['status' => 'Criado'], 201);
}
🏆 Nível 4: Desafio Corporativo
Problema 09.4 — Revogação e Expiração Automática de Tokens
Contexto: Revogação e Expiração Automática de Tokens no contexto de Autenticação de API com Laravel Sanctum.
Requisitos de Execução:
- Configurar expiração de token em
config/sanctum.phpe implementar revogação com$user->tokens()->delete().
Resultado Esperado
Todos os tokens ativos do usuário revogados no logout de todos os dispositivos.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_4_SeuNome - Envie na tarefa:
Atividade Cap 09 - Autenticação de API com Laravel Sanctum
🔑 Gabarito de Código & Solução Comentada
<?php
// Revogar tokens
public function logoutTodosDispositivos(Request $request)
{
$request->user()->tokens()->delete();
return response()->json(['mensagem' => 'Todos os acessos foram revogados']);
}