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