Laravel - Yetkilendirme

Önceki bölümde, Laravel'deki kimlik doğrulama sürecini inceledik. Bu bölüm size Laravel'deki yetkilendirme sürecini açıklamaktadır.

Kimlik Doğrulama ve Yetkilendirme Arasındaki Fark

Laravel'deki yetkilendirme süreci hakkında daha fazla bilgi edinmeden önce, kimlik doğrulama ve yetkilendirme arasındaki farkı anlayalım.

İçinde authentication, sistem veya web uygulaması, kullanıcılarını sağladıkları kimlik bilgileriyle tanımlar. Kimlik bilgilerinin geçerli olduğunu tespit ederse, kimlik doğrulaması yapılır veya değildir.

İçinde authorization, sistem veya web uygulaması, kimliği doğrulanmış kullanıcıların erişmeye veya istekte bulunmaya çalıştıkları kaynaklara erişip erişemeyeceğini kontrol eder. Diğer bir deyişle, talep edilen kaynaklar üzerindeki haklarını ve izinlerini kontrol eder. Kaynaklara erişebildiklerini tespit ederse, yetkili oldukları anlamına gelir.

Böylece, authentication kullanıcı kimlik bilgilerinin geçerliliğini kontrol etmeyi içerir ve authorization Kimliği doğrulanmış bir kullanıcının sahip olduğu kaynaklar üzerindeki hakların ve izinlerin kontrol edilmesini içerir.

Laravel'de Yetkilendirme Mekanizması

Laravel, iki ana yol içeren basit bir yetkilendirme mekanizması sağlar; Gates ve Policies.

Kapıları ve Politikaları Yazmak

Kapılar, bir kullanıcının belirli bir eylemi gerçekleştirmeye yetkili olup olmadığını belirlemek için kullanılır. Tipik olarak tanımlanırlarApp/Providers/AuthServiceProvider.phpKapı cephesini kullanarak. Kapılar ayrıca yetkilendirme mekanizmasını gerçekleştirmek için beyan edilen işlevlerdir.

İlkeler bir dizi içinde bildirilir ve yetkilendirme mekanizmasını kullanan sınıflar ve yöntemler içinde kullanılır.

Aşağıdaki kod satırları, bir Laravel web uygulamasında bir kullanıcıyı yetkilendirmek için Gates ve İlkeleri nasıl kullanacağınızı açıklamaktadır. Bu örnekte,boot işlevi, kullanıcıları yetkilendirmek için kullanılır.

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