Laravel - Autorización
En el capítulo anterior, hemos estudiado sobre el proceso de autenticación en Laravel. Este capítulo le explica el proceso de autorización en Laravel.
Diferencia entre autenticación y autorización
Antes de continuar aprendiendo sobre el proceso de autorización en Laravel, comprendamos la diferencia entre autenticación y autorización.
En authentication, el sistema o la aplicación web identifica a sus usuarios a través de las credenciales que proporcionan. Si encuentra que las credenciales son válidas, están autenticadas o no lo son.
En authorization, el sistema o la aplicación web comprueba si los usuarios autenticados pueden acceder a los recursos a los que intentan acceder o realizar una solicitud. En otras palabras, verifica sus derechos y permisos sobre los recursos solicitados. Si encuentra que pueden acceder a los recursos, significa que están autorizados.
Así, authentication implica comprobar la validez de las credenciales de usuario, y authorization implica verificar los derechos y permisos sobre los recursos que tiene un usuario autenticado.
Mecanismo de autorización en Laravel
Laravel proporciona un mecanismo simple de autorización que contiene dos formas principales, a saber Gates y Policies.
Redacción de puertas y políticas
Las puertas se utilizan para determinar si un usuario está autorizado para realizar una acción específica. Normalmente se definen enApp/Providers/AuthServiceProvider.phputilizando la fachada de la puerta. Las puertas también son funciones que se declaran para realizar el mecanismo de autorización.
Las políticas se declaran dentro de una matriz y se utilizan dentro de clases y métodos que utilizan mecanismos de autorización.
Las siguientes líneas de código le explican cómo usar Puertas y Políticas para autorizar a un usuario en una aplicación web de Laravel. Tenga en cuenta que en este ejemplo, elboot La función se utiliza para autorizar a los usuarios.
<?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);
//
}
}