Em Laravel, a proteção de rotas e recursos é uma parte fundamental da segurança do aplicativo web. O framework oferece várias maneiras de garantir que apenas usuários autorizados tenham acesso a determinadas rotas e recursos.

  1. Proteção de Rotas com Middleware: Middleware é uma camada intermediária que pode ser aplicada a grupos de rotas para verificar se um usuário tem permissão para acessá-las. É uma maneira elegante de garantir que as regras de acesso sejam aplicadas a várias rotas sem precisar repetir código em cada controlador.

    Exemplo: Suponha que você deseje proteger um grupo de rotas para garantir que apenas usuários autenticados possam acessá-las. Você pode usar o middleware auth para isso:

    // Definindo um grupo de rotas protegidas
    Route::middleware('auth')->group(function () {
        Route::get('/dashboard', 'DashboardController@index');
        Route::get('/profile', 'ProfileController@index');
        // Outras rotas protegidas aqui...
    });
    
    
  2. Proteção de Recursos com Políticas: As políticas são usadas para controlar o acesso a modelos específicos em seu aplicativo. Com as políticas, você pode definir facilmente regras de autorização para permitir que apenas usuários autorizados realizem determinadas ações em um recurso específico.

    Exemplo: Suponha que você tenha um modelo Post e queira permitir que apenas o autor do post possa atualizá-lo:

    // Criando a política para o modelo Post
    php artisan make:policy PostPolicy --model=Post
    
    // Definindo a regra de autorização no método update da PostPolicy
    public function update(User $user, Post $post)
    {
        return $user->id === $post->user_id;
    }
    
    

    Em seguida, você pode aplicar a política no controlador do modelo:

    public function update(Request $request, Post $post)
    {
        $this->authorize('update', $post);
    
        // Restante da lógica de atualização do post aqui...
    }
    
    
  3. Proteção de Recursos com Middleware Personalizado: Além do uso de políticas, você também pode criar seus próprios middlewares personalizados para proteger recursos com base em regras específicas do aplicativo.

    Exemplo: Vamos criar um middleware personalizado chamado CheckUserRole para permitir apenas que usuários com uma função específica acessem uma determinada rota:

    // Criando o middleware
    php artisan make:middleware CheckUserRole
    
    // Definindo a lógica no middleware CheckUserRole
    public function handle($request, Closure $next, $role)
    {
        if (!$request->user() || $request->user()->role !== $role) {
            return redirect('/home'); // Ou lançar uma exceção, retornar uma resposta 403, etc.
        }
    
        return $next($request);
    }
    
    

    Em seguida, podemos aplicar esse middleware em nossas rotas:

    Route::middleware('checkUserRole:admin')->group(function () {
        Route::get('/admin/dashboard', 'AdminController@dashboard');
        // Outras rotas acessíveis apenas para usuários com a função 'admin' aqui...
    });
    
    

Esses são apenas alguns exemplos de como o Laravel oferece proteção de rotas e recursos para garantir a segurança do seu aplicativo. Sempre garanta que suas políticas e middlewares sejam configurados corretamente para proteger seu aplicativo de acessos não autorizados.

Laravel - The PHP Framework For Web Artisans

Laravel - Protegendo Rotas - Autenticação

Laravel - The PHP Framework For Web Artisans

Laravel - Protegendo Rotas - Verificação

Laravel - The PHP Framework For Web Artisans

Laravel - Protegendo Rotas - Passport

Laravel - The PHP Framework For Web Artisans

Laravel - Protegendo Rotas - Sanctum

Laravel - The PHP Framework For Web Artisans

Laravel - Protegendo Rotas - Fortify