Middlewares no Laravel: No desenvolvimento de aplicações web, a segurança e a filtragem de requisições são aspectos cruciais. O Laravel oferece um mecanismo poderoso para isso: os middlewares.
Um middleware é um pedaço de código que é executado antes que uma requisição HTTP chegue ao seu controlador. Ele permite que você inspecione a requisição, modifique-a ou até mesmo interrompa o fluxo normal da aplicação, com base em determinadas condições.
Neste artigo, vamos explorar a fundo os middlewares no Laravel, desde os conceitos básicos até exemplos práticos.
O que são Middlewares?
Imagine um middleware como um porteiro de um prédio. Antes de alguém entrar, o porteiro verifica se a pessoa tem autorização, se está usando a identificação correta, etc.
No Laravel, os middlewares funcionam de forma similar, interceptando as requisições HTTP e realizando verificações antes de permitir que a requisição chegue ao seu destino final (o controlador).
Criando um Middleware
Para criar um novo middleware, utilizamos o Artisan:
Bash
php artisan make:middleware CheckAge
Isso criará um novo arquivo em app/Http/Middleware/CheckAge.php
.
Estrutura de um Middleware
PHP
namespace AppHttpMiddleware;
use Closure;
class CheckAge
{
/**
* Handle an incoming request.
*
* @param IlluminateHttpRequest $request
* @param Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if ($request->user()->age < 18) {
return redirect('home');
}
return $next($request);
}
}
handle
method: Este é o método principal do middleware. Ele recebe a requisição e uma closure.$next
: É uma closure que, quando chamada, passa a requisição para o próximo middleware ou controlador.
Atribuindo Middlewares a Rotas
Existem várias maneiras de atribuir middlewares a rotas:
1. Individualmente:
PHP
Route::get('/admin', 'AdminController@dashboard')->middleware('auth');
2. Em grupos:
PHP
Route::middleware('auth')->group(function () {
Route::get('/profile', 'ProfileController@show');
Route::get('/settings', 'SettingsController@index');
});
3. Globalmente:
No arquivo app/Http/Kernel.php
, você pode definir middlewares que serão executados em todas as requisições.
Middlewares Built-in
O Laravel já vem com alguns middlewares pré-configurados:
web
: Inclui sessões, cookies e CSRF protection.api
: Ideal para APIs, sem sessões ou cookies.auth
: Verifica se o usuário está autenticado.
Exemplos de Uso
- Autenticação: Verificar se o usuário está logado antes de acessar determinadas páginas.
- Autorização: Verificar se o usuário tem permissão para acessar um recurso.
- Logs: Registrar todas as requisições em um log.
- Manutenção: Colocar a aplicação em modo de manutenção.
- Limitação de requisições: Limitar o número de requisições por minuto.
Criando um Middleware Customizado
Vamos criar um middleware para verificar se o usuário é um administrador. Primeiro, criaremos nosso middleware através do artisan!
Bash
php artisan make:middleware CheckAge
Agora implementamos a lógica do nosso middleware.
PHP
namespace AppHttpMiddleware;
use Closure;
class IsAdmin
{
public function handle($request, Closure $next)
{
if (!auth()->user()->isAdmin()) {
abort(403, 'Unauthorized');
}
return $next($request);
}
}
E atribuimos este middleware a uma rota:
PHP
Route::middleware(['auth', 'isAdmin'])->group(function () {
// Rotas somente para administradores
});
Pronto! Agora toda rota em que o usuário precise ser administrador para ter acesso passará pelo nosso middleware de verificação!!!
Conclusão
Middlewares no Laravel: Os middlewares são uma ferramenta poderosa no Laravel para filtrar e proteger suas requisições. Eles permitem que você implemente uma lógica de segurança robusta, personalizar o comportamento da sua aplicação e garantir uma melhor experiência do usuário. Ao entender como criar e utilizar middlewares, você estará mais preparado para construir aplicações web escaláveis e seguras.
Dicas Adicionais:
- Crie middlewares reutilizáveis: Evite duplicar código criando middlewares genéricos que podem ser reutilizados em diferentes partes da sua aplicação.
- Utilize middleware groups: Agrupe middlewares comuns para facilitar a manutenção.
- Explore os middlewares built-in: O Laravel oferece diversos middlewares pré-configurados que podem agilizar o desenvolvimento.
- Teste seus middlewares: Certifique-se de que seus middlewares estão funcionando corretamente e não estão causando problemas inesperados.
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: