Laravel - Autoryzacja
W poprzednim rozdziale zbadaliśmy proces uwierzytelniania w Laravel. W tym rozdziale opisano proces autoryzacji w Laravel.
Różnica między uwierzytelnianiem a autoryzacją
Zanim przejdziemy dalej do poznania procesu autoryzacji w Laravel, zrozummy różnicę między uwierzytelnianiem a autoryzacją.
W authentication, system lub aplikacja internetowa identyfikuje swoich użytkowników za pomocą podanych przez nich poświadczeń. Jeśli stwierdzi, że poświadczenia są prawidłowe, są one uwierzytelnione lub nie.
W authorization, system lub aplikacja internetowa sprawdza, czy uwierzytelnieni użytkownicy mogą uzyskać dostęp do zasobów, do których próbują uzyskać dostęp lub o które proszą. Innymi słowy, sprawdza ich prawa i uprawnienia do żądanych zasobów. Jeśli stwierdzi, że mają dostęp do zasobów, oznacza to, że są autoryzowani.
A zatem, authentication obejmuje sprawdzenie poprawności poświadczeń użytkownika i authorization polega na sprawdzeniu praw i uprawnień do zasobów, które posiada uwierzytelniony użytkownik.
Mechanizm autoryzacji w Laravel
Laravel zapewnia prosty mechanizm autoryzacji, który obejmuje dwa podstawowe sposoby, a mianowicie Gates i Policies.
Pisanie bram i zasad
Bramy służą do określania, czy użytkownik jest upoważniony do wykonania określonej czynności. Są one zwykle zdefiniowane wApp/Providers/AuthServiceProvider.phpza pomocą elewacji bramy. Bramy to również funkcje, które są zadeklarowane do wykonywania mechanizmu autoryzacji.
Zasady są deklarowane w tablicy i są używane w klasach i metodach, które używają mechanizmu autoryzacji.
Poniższe wiersze kodu wyjaśniają, jak używać bramek i reguł do autoryzacji użytkownika w aplikacji internetowej Laravel. Zwróć uwagę, że w tym przykładzieboot Funkcja służy do autoryzacji użytkowników.
<?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);
//
}
}