Laravel permission control Gate Policy
This article mainly introduces the Laravel permission control Gate Policy, which has certain reference value. Now I share it with everyone. Friends in need can refer to it
About permissions
The essence is to describe the judgment of whether to start production for an executable logical unit.
Definition There must be a user instance or unique identification parameter, and the usage resource associated with it. Usually a closure or function or method is used
Use to call the permission logical unit handle, parameter permission operation object, user information.
Source
The most basic permission control, ternary operator? :. Obviously conditional judgment, then jump to the corresponding execution logic.
Laravel’s idea is to separate execution logic (production code) and authorization (conditional judgment logic). Focus on the generation of conditions, and generally speaking, strengthen authorization logic (this is very useful for complex authorization). Postulate: All codes are started after the service registration is completed. So the following code will be registered. Its purpose is to find the logical body that truly authorizes judgment.
Gate::define('update articles', 'ArticlePolicy@update')
The first parameter is obviously just an authorization identifier (the handle parameter used to call), and the second parameter is the authorized logical execution body.
laravel authorization definition
Define authorization in the boot
method of AuthServiceProvider
Gate::define('update articles', function ($user, $article) { return $user->id == $article->user_id; }); Gate::define('update articles', 'ArticlePolicy@edit');
<?php namespace App\Policies; use App\User; use App\Models\Article; class ArticlePolicy { public function update(User $user, Article $article) { return $user->id == $article->author_id; } }
laravel authorized use
Gate facade:
Gate::allows('update articles', $article)
andGate::denies('update articles', $article)
.Controller introduces
trait AuthorizesRequests
$this->authorize('update articles', $article)
.Blade template:
@can('update articles', $article)
and@cannot('update articles', $article)
instruction.User Model Example:
$user->can('update articles', $article)
and$user->cannot('update articles', $article)
.
Laravel Policy
In order to easily define and use authorization, Laravel introduces Policy based on Gate. Each method within the policy will be registered with the description of the gate::define method. So this is why after using the policy class registration, even if the authorization logic is not defined with the Gate facade, the form of Gate::allow('strategy class method') can still be used in the controller to make authorization judgments.
First define the authorization mapping relationship in the policies
array attribute of AuthServiceProvider
/** * The policy mappings for the application. * * @var array */ protected $policies = [ Article::class => ArticlePolicy::class, ];
<?php namespace App\Policies; use App\User; use App\Models\Article; use Illuminate\Auth\Access\HandlesAuthorization; class ArticlePolicy { use HandlesAuthorization; public function create(User $user) { return true; } public function delete(User $user, Article $article) { return $user->id == $article->author_id; } public function before($user, $ability) { if($user->isSuperAdmin()){ return true; } } }
Note:
Policy just adds a HandlesAuthorization
trait based on ordinary PHP classes.
In Policy, it will be called before all methods are executed. It is often used to handle administrator authorization logic.
Related recommendations:
How Laravel uses gulp to build front-end resources
The above is the detailed content of Laravel permission control Gate Policy. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Method for obtaining the return code when Laravel email sending fails. When using Laravel to develop applications, you often encounter situations where you need to send verification codes. And in reality...

Laravel schedule task run unresponsive troubleshooting When using Laravel's schedule task scheduling, many developers will encounter this problem: schedule:run...

This article provides a detailed review of the latest version of Bitcoin’s historical price in 2025, and detailed the price trend of Bitcoin since its birth in 2009. From its initial obscurity to a global digital asset, Bitcoin price has experienced many surges and plummeted. This article will review its key milestones, such as the "pizza event" in 2010, the breakthrough of $1,000 in 2013, the breakthrough of $20,000 in 2017, and subsequent market adjustments. We will analyze the main factors affecting Bitcoin price fluctuations, including technological development, regulatory policies, market sentiment and macroeconomic environment, and make an outlook on future development trends to provide readers with a comprehensive reference for understanding the changes in Bitcoin price and help investors better conduct risk assessments.

The method of handling Laravel's email failure to send verification code is to use Laravel...

How to implement the table function of custom click to add data in dcatadmin (laravel-admin) When using dcat...

This article introduces free digital asset quotation software apps and websites that can provide investors with key information such as real-time prices, price charts, transaction volume, fluctuations, market depth and news information to help investors make informed decisions. Compared with paid software, free software has the advantages of no cost, rich features, and easy operation. The article also guides users how to choose the right market software, and reminds users to pay attention to data sources, information accuracy and avoid excessive dependence, which ultimately helps investors better grasp the trends of the digital asset market. Want to know how to use free market software efficiently? Read the full text quickly!

The impact of sharing of Redis connections in Laravel framework and select methods When using Laravel framework and Redis, developers may encounter a problem: through configuration...

Custom tenant database connection in Laravel multi-tenant extension package stancl/tenancy When building multi-tenant applications using Laravel multi-tenant extension package stancl/tenancy,...
