Laravel - Autorizzazione
Nel capitolo precedente, abbiamo studiato il processo di autenticazione in Laravel. Questo capitolo spiega il processo di autorizzazione in Laravel.
Differenza tra autenticazione e autorizzazione
Prima di procedere ulteriormente nell'apprendimento del processo di autorizzazione in Laravel, comprendiamo la differenza tra autenticazione e autorizzazione.
In authentication, il sistema o l'applicazione Web identifica i propri utenti tramite le credenziali fornite. Se rileva che le credenziali sono valide, vengono autenticate, oppure non lo sono.
In authorization, il sistema o l'applicazione web controlla se gli utenti autenticati possono accedere alle risorse a cui stanno tentando di accedere o per cui fanno una richiesta. In altre parole, controlla i loro diritti e permessi sulle risorse richieste. Se rileva che possono accedere alle risorse, significa che sono autorizzati.
Quindi, authentication implica il controllo della validità delle credenziali dell'utente e authorization implica il controllo dei diritti e delle autorizzazioni sulle risorse di cui dispone un utente autenticato.
Meccanismo di autorizzazione a Laravel
Laravel fornisce un semplice meccanismo di autorizzazione che contiene due modi principali, vale a dire Gates e Policies.
Scrittura di cancelli e politiche
Le porte vengono utilizzate per determinare se un utente è autorizzato a eseguire un'azione specifica. Sono generalmente definiti inApp/Providers/AuthServiceProvider.phputilizzando la facciata del cancello. I gate sono anche funzioni dichiarate per eseguire il meccanismo di autorizzazione.
Le policy vengono dichiarate all'interno di un array e vengono utilizzate all'interno di classi e metodi che utilizzano meccanismi di autorizzazione.
Le seguenti righe di codice spiegano come utilizzare Gates e Policy per autorizzare un utente in un'applicazione web Laravel. Si noti che in questo esempio, il fileboot viene utilizzata per autorizzare gli utenti.
<?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);
//
}
}