Laravel ?? ??? ??: ???? ??? ? ?? ??? ?? ???? ??? ???? ??
Nov 02, 2023 pm 04:43 PMLaravel ?? ??? ??: ???? ??? ? ?? ??? ?? ???? ???? ???? ??
??: ???? ??? ??? ?? ??? ?? ??? ?? ? ????? ????. ???? ??? ? ?? ??? ?? ?????? ??? ???? ??? ???? ??? ?? ? ???? ??? ? ?? ??? ???? ???? ???. ?? ???? PHP ?????? Laravel? ??? ?? ??? ?????. ? ????? ???? ???? ???? ???? ??? ?? ???? ???? ???? ??? ?????. ? ???? ?? ??? ?? ? ??, ?? ?? ? ??, ?? ?? ? ?? ??? ?????. ??? ? ????? ??? Laravel ?? ??? ? ? ???? ???? ? ??? ?? ?? ?? ??? ?????.
1. ?? ?? ? ??
Laravel??? Spatie Laravel Permissions ?? ???? ???? ??? ??? ??? ? ????. ? ?? ?? ??? ?? ?? ??? ???? ??? ????. ???? ?? Composer? ?? ??? ? ?? ?? ???? ???? ???.
composer require spatie/laravel-permission
??? ??? ? Laravel? ?? ??? ?? ??? ??? ??? ??????? ???? ?? ??? ???? ?? ???. ??? ??:
'providers' => [ SpatiePermissionPermissionServiceProvider::class, ], 'aliases' => [ 'Permission' => SpatiePermissionModelsPermission::class, 'Role' => SpatiePermissionModelsRole::class, ],
???? ?? ???? ?????? ??? ???? ?????? ??? ???? ???.
php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="migrations" php artisan migrate
??????? ?? ???? ??? ? ?? ??? ???? ???. ??? ????? ??, ??, ?? ? ?? ??? ???? ?? ???? ?? ? ????. ?? ?? ? ?? ??? ???? ?? ??? ??? ? ????. ??? ??? ????.
use SpatiePermissionModelsPermission; $system = Permission::create(['name' => 'system']); $userManagement = Permission::create(['name' => 'user management']); $userCreate = Permission::create(['name' => 'user create']); $userUpdate = Permission::create(['name' => 'user update']); $userDelete = Permission::create(['name' => 'user delete']); $system->syncChildren([$userManagement]); $userManagement->syncChildren([$userCreate, $userUpdate, $userDelete]);
? ??? "system"??? ?? ??? "user Management"?? ?? ??? ?????. ??? "???"? syncChildren() ???? ?? "??? ??"? ????, "??? ??"? "??? ??", "??? ????", "??? ??"? ???? ?? ??? ?????.
2. ?? ?? ? ??
??? ?? ???? ??? ? ? ????? ?? ??? ???? ???. Laravel Permissions ?? ???? ??? ??? ???? ??? ??? ?????. ??? ??? insertRole() ???? ?? ????? ??? ??? ? ??, ??? givePermissionTo() ???? ?? ??? ??? ??? ? ????. ?? ??? ????.
use AppModelsUser; use SpatiePermissionModelsRole; use SpatiePermissionModelsPermission; $user = User::find(1); $role = Role::create(['name' => 'admin']); $permission = Permission::findByName('user create'); $user->assignRole($role); $role->givePermissionTo($permission);
? ??? ID 1? ????? "admin"??? ??? ???? ?? ??? "User Create" ??? ?????.
??? ?? ??? ???? ? ??? Laravel? ?????? ?? ??? ??? ??? ?? ????. Spatie Permissions ?? ???? ???, ?? ? ??? ?? ??? ? ?? ? ????? ??? ?????. Laravel??? ?? ??? ???? ? ????? ?? ???? ??? ? ????:
php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="views" php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="config"
??? ??? ? config/permissions.php
???? ??? ???? ????? ??? ? ???, ?? ?? /permissions
??? Access? ???? ?? ?? ?????? ?????. config/permissions.php
文件中配置路由前綴和中間件,然后通過訪問/permissions
路徑即可進(jìn)入權(quán)限管理界面。
三、權(quán)限驗證與控制
在進(jìn)行權(quán)限驗證與控制時,Laravel Permissions擴展包同樣提供了便捷的方式。我們可以通過authorize()
方法對用戶進(jìn)行權(quán)限驗證,以確定用戶是否具備執(zhí)行某個操作的權(quán)限。示例如下:
use IlluminateSupportFacadesAuth; if (Auth::user()->can('user create')) { // 執(zhí)行某個操作 } else { // 沒有權(quán)限執(zhí)行該操作 }
以上代碼中,我們通過can()
方法來驗證當(dāng)前用戶是否具備"用戶創(chuàng)建"的權(quán)限,如果具備權(quán)限則執(zhí)行相應(yīng)操作,否則提示用戶沒有權(quán)限。
除了在代碼中進(jìn)行權(quán)限驗證,我們還可以在Laravel的路由中使用中間件來進(jìn)行權(quán)限控制。我們可以通過定義中間件并將其應(yīng)用到路由中,從而實現(xiàn)訪問某個路由時的權(quán)限驗證。示例如下:
use IlluminateSupportFacadesRoute; use AppHttpMiddlewareCheckPermission; Route::group(['middleware' => CheckPermission::class], function () { Route::get('/users', 'UserController@index'); // 其他路由... });
以上代碼中,我們通過CheckPermission
中間件對/users
路由進(jìn)行了權(quán)限驗證。在CheckPermission
中間件中,我們可以使用can()
authorize()
???? ???? ???? ??? ???? ????? ??? ??? ??? ??? ??? ? ????. ?? ??? ????. rrreee
? ?????can()
???? ???? ?? ????? "??? ??" ??? ??? ?????. ?? ??? ???? ??? ????? ??? ??? ???? ?????. ???????? ?? ??? ???? ? ??? ?? ??? ?? Laravel ????? ????? ??? ?? ????. ????? ???? ?? ??? ???? ??? ???? ? ?? ??? ??? ? ????. ?? ??? ????. ??rrreee??? ????? CheckPermission
????? ???? /users
??? ?? ??? ?????. CheckPermission
?????? can()
???? ???? ?? ????? ?? ??? ??? ??? ? ????. ??? ?? ?? ??? ???? ?? ?? ???? ?????. ??????: ????? ??? ???? ??? ? ?? ??? ?? ???? ???? ? ??? ?? ?????. Laravel? ?? ??? ???? ??? ??? ?? ??, ??, ??? ? ?? ?? ??? ?? ?? ? ??? ??? ? ????. ??? ? ????? ??? Laravel ?? ??? ? ? ???? ???? ? ??? ?? ? ?? ???? ?? ??? ?????. ? ??? ???? ??? ?? ???? ??? ? ??? ??? ????. ??? ??? Laravel ?? ??? ??: ???? ??? ? ?? ??? ?? ???? ??? ???? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

Laravel ?? ???? 4 ?? ?? ??? ?? ?? ???? ???? ???? ? ????. 1. ?? ????? ???? ?? ??? ??? ??? ?? ???? ??? ???? ?????? ??? ??? ????? ?? ??? ?? ???? ??? ??????. 2. ???? ?? ????? ??????? ?????, n 1 ??? ???, ?? ??? ????, ??? ??, ??? ?? ? ?? ? ?? ??, ?? ??? ????. 3. ?? ?? ?? ? ?? ???? ??? ??? ?? ?? ??? ? ??? ???? ???? ???? ???? ???? ? ?? ????? ??????. 4. ??? ?? ? ???? ??? ??? ??? ?? ???? ????? ?? ?????? ????? ?? ???? ? ??? ?? ??? ????? ??????.

Laravelsanctum? SPA ?? ??? ??????? ?? ???? ?? API ??? ??? ?? ??? ?? OAUTH2 ??? ??? ????? ?????. 1. Sanctum? ?? ?? ??? ????, ??? ???? ?????. 2. Passport? ?? ?? ? ????? ?? ??? ?? ??? ????? ????, ?? ???? ?????? ?????. 3. ?? ?? ? ??? ? ???? ?? ?? ??? ????. 4. ?? ??? ?????? ??? ???? ??? ?? ??? ??? ???? ?????. ??? ? ???? ?? ??? ?? OAUTH2 ??? ???? ??? ???????.

Laravel ????? ?????? ??? ???? ???? RefreshDatabase ??, ??? ??? ??, ?? ??? ?? ? ??? ?? ?? ??? ?????. 1. ?? ??? ???? ? ???? ??? ??????? ??????? ???? ?? ?????? ??? ???? ?????????. 2. ?? ??? ???? ??? ???? ??? ?? ???? ?? ?? ???? ?????. 3. DatabasEtransactionStrait? ???? ??? ?? ??? ????? ? ?????????. 4. ???? ???? ???? ??????? ???? ??? ? ?? ? ??????? ?? ??????. ??? ??? ???? ???? ???? ???? ?? ??? ? ??? ??? ?? ???? ?????.

Laravel? ?? ???? ?????? ???? ??? ??????. 1. DB :: Transaction () ???? ???? ??? ???? ???? ?? ?? ?? ?? ?? ??; 2. ?? ? ????? ???? ?? ???? ?? ????? ????? ?? ???? ??? ???? ???? ??? ?? ????. 3.?? ??? ??? ??? ????? ??? begintransaction (), commit () ? rollback ()? ?? ?? ?? ??? ?????. 4. ?? ???? ??? ?? ????, ??? ?? ??, ??? ?? ? ?? ?? ??? ?????. ????? ?? ?? ??? ???? ?? ???? ??? ? ??? ???? ? ????.

Laravel?? HTTP ?? ? ??? ???? ??? ?? ???, ?? ?? ? ?? ???? ??? ????? ????. 1. ?? ???? ?? ? ? ?? ????? ?? ?? ????? ???? input () ?? ?? ???? ???? ??? ?? ??? ?? validate () ?? ?? ?? ???? ?? ? ? ????. 2. Return Response? ???,??, JSON, ?? ?? ? ??? ?? ?? ? ???? ??? ?????. 3. ?? ???? ?? ? ?? ?? () ??? ? Store ()? ???? ??? ???????. ????? ?? ?? ?? ? ??? ?????? ???? ??? ??????? ??? ? ????.

Laravel?? ??? ??? ??? ???? ?? ???? ??? Route () ??? ??? ???? ????. Route () ??? ??? ?? ??? ???? ??? ???? ???? ?? ?? ???? ???? ????. 1. Route ( 'user.profile', [ 'id'=> 1])? ?? ???? ????? ?? ??? ?? ??? ?????. 2. ?? ?? ?? ? ? ?? ? ?????? ??? Route ( 'user.post.show', [ 'id'=> 1, 'postId'=> 10]? ?? ??? ??? ??? ????. 3. ??? ????? ?? ???? ???? ?? ?? ? ? ????. 4. ??? ?? ??? ???? ??? Route ( 'user.post',

Laravel? ?? ??? ?? ?? ??? ?? ?? ??? ???? ??? ??????. ?? ???? ?? ??? ????? ? ???? I/O ?? ? ?? ?? ??? ???? ???? ??? ?? ? ????. 1. ?? ????? ?? ? ? ???????? ??? ????? ?? ???? ??????. 2. ??? ? ??? ?? ? ? PhPartisAnconfig? ?? ???????. 3. ?? ??? ??? ??? ???? ?? ?? ?? ???? ???? ????. 4. ?? ?? ??? ???? ?? ??? ??? .env ??? ???? ?? ???????.

Laravel? ??? ?? ??? ?? ???? ?? ?????. ?? ??? ??? ????. 1. ?? ???? ?? ?? ?????. 2. Phpartisanqueue? ?? ???? ??? ? ? ?? ??? ?????? : Work- Queue = High, Default; 3. onqueue () ???? ???? ??? ?? ? ? ? ??? ??????. 4. Laravelhorizon ? ?? ??? ???? ??? ??? ?????? ?????. ?? ?? ?? ?? ?? ? ??? ???? ????? ?? ??? ?? ??? ?? ?????.
