Middlewares no Laravel

Laravel
Tempo de leitura: 4 minutos

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 App\Http\Middleware;

use Closure;

class CheckAge
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $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 App\Http\Middleware;

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:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
PHP
PHP

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:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *