Middlewares no Laravel: No Laravel 12, os Middlewares são o mecanismo essencial para interceptar e processar requisições HTTP antes que elas cheguem à sua lógica de negócio (os Controllers). Eles agem como uma “camada intermediária” onde você pode inspecionar a requisição, adicionar cabeçalhos, realizar verificações de segurança ou redirecionar o usuário.
Entender a arquitetura de Middleware é crucial para implementar funcionalidades como autenticação, autorização e logging de forma limpa e modular.
1. 💡 O Conceito de Middleware
Imagine um Middleware como uma série de filtros em um funil ou uma série de porteiros em um clube. Cada porteiro tem uma função específica (verificar idade, checar lista de convidados, inspecionar bagagens). Se a requisição passar por todos os filtros, ela chega ao destino.
- Inspeção: O Middleware recebe o objeto
Request. - Decisão: Ele pode modificar a requisição ou verificar uma condição.
- Ação: Se a condição falhar, ele interrompe o fluxo e retorna uma resposta (ex: erro 403, redirecionamento para login). Se for aprovado, ele passa a requisição para o próximo elemento.
2. 🛠️ Criando um Middleware Customizado
Para criar um novo Middleware, usamos o comando Artisan:
Bash
php artisan make:middleware CheckUserStatus
# Cria o arquivo em app/Http/Middleware/CheckUserStatus.php
Estrutura do Método handle()
O coração do Middleware é o método handle(), que recebe a requisição ($request) e um closure ($next).
PHP
<?php
// app/Http/Middleware/CheckUserStatus.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckUserStatus
{
public function handle(Request $request, Closure $next): Response
{
// 1. Lógica de PRÉ-PROCESSAMENTO:
// Exemplo: Se o usuário estiver desativado, proibir o acesso.
if (auth()->check() && !auth()->user()->is_active) {
auth()->logout(); // Força o logout
return redirect('/login')->with('error', 'Sua conta está inativa.');
}
// 2. Passa a requisição para o próximo Middleware/Controller:
$response = $next($request);
// 3. Lógica de PÓS-PROCESSAMENTO (Executada após o Controller):
// Exemplo: Adicionar um header de segurança na resposta.
$response->headers->set('X-Content-Type-Options', 'nosniff');
return $response;
}
}
3. 🧩 Registro e Atribuição de Middlewares
Para que o Laravel reconheça e utilize seu Middleware, ele precisa ser registrado no Kernel HTTP.
A. Registro no Kernel HTTP (Laravel 12)
No Laravel 12, a configuração de Middleware está centralizada no arquivo bootstrap/app.php, dentro da instância da aplicação, em vez do arquivo App/Http/Kernel.php das versões anteriores (Laravel 10 para trás).
Você deve mapear seu Middleware para um nome curto (uma chave) na configuração:
PHP
// bootstrap/app.php (trecho conceitual de registro)
return Application::configure(basePath: dirname(__DIR__))
// ...
->withMiddleware(function (Middleware $middleware) {
// Registro de Middlewares de Rota:
$middleware->alias([
'auth' => \App\Http\Middleware\Authenticate::class,
'is.admin' => \App\Http\Middleware\IsAdmin::class, // Seu middleware
]);
// Registro de Middlewares Web Globais ou de API
// ...
})
// ...
B. Atribuição a Rotas
Você pode atribuir Middlewares individualmente, em grupos ou a Controllers de recurso.
1. Atribuição por Rota Individual
PHP
// routes/web.php
// Acesso a esta rota requer autenticação ('auth') e permissão de admin ('is.admin')
Route::get('/admin/painel', [AdminController::class, 'index'])
->middleware(['auth', 'is.admin']);
2. Agrupamento de Rotas
Aplique Middlewares a um conjunto de rotas relacionadas:
PHP
// routes/web.php
Route::middleware(['auth', 'is.admin'])->group(function () {
// Rotas onde 'auth' e 'is.admin' serão executados automaticamente
Route::get('/admin/users', [UserController::class, 'index']);
Route::post('/admin/create', [UserController::class, 'store']);
});
3. Em um Controller (Método __construct)
Para aplicar um Middleware a todos ou apenas a certos métodos de um Controller.
PHP
<?php
class PostController extends Controller
{
public function __construct()
{
// Aplica o middleware 'auth' a todos os métodos deste Controller
$this->middleware('auth');
// Aplica 'is.admin' APENAS aos métodos 'store' e 'update'
$this->middleware('is.admin')->only(['store', 'update']);
}
// ...
}
4. 🔗 Middlewares Built-in Comuns
O Laravel já oferece uma série de Middlewares essenciais prontos para uso:
| Middleware | Propósito | Grupo Padrão |
web | Define recursos necessários para aplicações web (sessão, cookies, proteção CSRF). | Aplicado por padrão em routes/web.php. |
api | Define recursos para APIs (sem sessão, rate limiting configurado). | Aplicado por padrão em routes/api.php. |
auth | Verifica se o usuário está autenticado. | Usado em rotas específicas. |
throttle | Limita o número de requisições que um usuário pode fazer por período (rate limiting). | Usado no grupo api por padrão. |
✅ Conclusão Middlewares no Laravel
Middlewares no Laravel 12: Os Middlewares são ferramentas de controle de fluxo que protegem e filtram as requisições HTTP antes que elas cheguem à sua aplicação. Seja para verificar a autenticação, a autorização ou para adicionar headers de segurança na resposta, eles permitem implementar lógica de forma modular, mantendo seus Controllers focados puramente na lógica de negócio, essencial para a escalabilidade e segurança do seu projeto.
Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:















