Laravel - Autorização
No capítulo anterior, estudamos sobre o processo de autenticação no Laravel. Este capítulo explica o processo de autorização no Laravel.
Diferença entre autenticação e autorização
Antes de prosseguirmos no aprendizado sobre o processo de autorização no Laravel, vamos entender a diferença entre autenticação e autorização.
Dentro authentication, o sistema ou o aplicativo da web identifica seus usuários por meio das credenciais que eles fornecem. Se descobrir que as credenciais são válidas, elas são autenticadas ou não.
Dentro authorization, o sistema ou o aplicativo da web verifica se os usuários autenticados podem acessar os recursos que estão tentando acessar ou para fazer uma solicitação. Em outras palavras, ele verifica seus direitos e permissões sobre os recursos solicitados. Se ele descobrir que eles podem acessar os recursos, significa que eles estão autorizados.
Portanto, authentication envolve a verificação da validade das credenciais do usuário e authorization envolve a verificação dos direitos e permissões sobre os recursos que um usuário autenticado possui.
Mecanismo de Autorização no Laravel
O Laravel fornece um mecanismo simples de autorização que contém duas formas principais, a saber Gates e Policies.
Escrevendo portas e políticas
Gates são usados para determinar se um usuário está autorizado a executar uma ação especificada. Eles são normalmente definidos emApp/Providers/AuthServiceProvider.phpusando a fachada do portão. As portas também são funções declaradas para executar o mecanismo de autorização.
As políticas são declaradas em uma matriz e são usadas em classes e métodos que usam mecanismo de autorização.
As linhas de código a seguir explicam como usar as portas e políticas para autorizar um usuário em uma aplicação web Laravel. Observe que, neste exemplo, oboot função é usada para autorizar os usuários.
<?php
namespace App\Providers;
use Illuminate\Contracts\Auth\Access\Gate as GateContract;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any application authentication / authorization services.
*
* @param \Illuminate\Contracts\Auth\Access\Gate $gate
* @return void
*/
public function boot(GateContract $gate) {
$this->registerPolicies($gate);
//
}
}