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.
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...
});
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...
}
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