当前位置: 首页 > 文档资料 > Laravel 入门教程 >

授权(Authorization)

优质
小牛编辑
125浏览
2023-12-01

在前一章中,我们研究了Laravel中的身份验证过程。 本章将向您介绍Laravel中的授权过程。

身份验证和授权之间的区别

在进一步了解Laravel中的授权过程之前,让我们了解身份验证和授权之间的区别。

authentication ,Web应用程序或系统通过定义的凭据验证用户。 如果凭据根据记录匹配,则对它们进行身份验证,否则不进行身份验证。

当我们描述术语authorization ,它仅描述验证用户是否可以访问为其定义的资源。 换句话说,它验证了它们对请求和定义的资源的权限和权限。 如果经过身份验证的用户可以按定义访问资源,则表示他们已获得授权。

因此, authentication涉及检查用户凭据的有效性, authorization涉及检查经过身份验证的用户拥有的资源的权限和权限。

Laravel的授权机制

Laravel提供了一种简单的授权机制,包含两种主要方式,即GatesPolicies

写门和政策

门用于确定用户是否有权执行指定的操作。 它们通常使用Gate facade在App/Providers/AuthServiceProvider.php定义。 盖茨也是为执行授权机制而声明的功能。

策略在数组中声明,并在使用授权机制的类和方法中使用。

以下代码行说明如何使用Gates和Policies在Laravel Web应用程序中授权用户。 请注意,在此示例中, boot功能用于授权用户。

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