首页  >  文章  >  php框架  >  Laravel - 授权

Laravel - 授权

PHPz
PHPz原创
2024-08-27 10:51:04686浏览

在上一章中,我们学习了 Laravel 中的身份验证过程。本章向您解释 Laravel 中的授权流程。

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

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

身份验证中,系统或 Web 应用程序通过用户提供的凭据来识别其用户。如果发现凭据有效,则它们已通过身份验证,否则则不是。

授权中,系统或Web应用程序检查经过身份验证的用户是否可以访问他们尝试访问或发出请求的资源。换句话说,它检查他们对所请求资源的权利和权限。如果发现可以访问该资源,则表示已获得授权。

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

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 = [
      &#39;App\Model&#39; => &#39;App\Policies\ModelPolicy&#39;,
   ];
   
   /**
      * Register any application authentication / authorization services.
      *
      * @param \Illuminate\Contracts\Auth\Access\Gate $gate
      * @return void
   */
   
   public function boot(GateContract $gate) {
      $this->registerPolicies($gate);
      //
   }
}


以上是Laravel - 授权的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn