授权(Authorization)
优质
小牛编辑
125浏览
2023-12-01
在前一章中,我们研究了Laravel中的身份验证过程。 本章将向您介绍Laravel中的授权过程。
身份验证和授权之间的区别
在进一步了解Laravel中的授权过程之前,让我们了解身份验证和授权之间的区别。
在authentication ,Web应用程序或系统通过定义的凭据验证用户。 如果凭据根据记录匹配,则对它们进行身份验证,否则不进行身份验证。
当我们描述术语authorization ,它仅描述验证用户是否可以访问为其定义的资源。 换句话说,它验证了它们对请求和定义的资源的权限和权限。 如果经过身份验证的用户可以按定义访问资源,则表示他们已获得授权。
因此, authentication涉及检查用户凭据的有效性, authorization涉及检查经过身份验证的用户拥有的资源的权限和权限。
Laravel的授权机制
Laravel提供了一种简单的授权机制,包含两种主要方式,即Gates和Policies 。
写门和政策
门用于确定用户是否有权执行指定的操作。 它们通常使用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);
//
}
}