Laravel5.5 使用 spatie/Laravel-permission 實現許可權分配
阿新 • • 發佈:2018-12-21
心有猛虎 細嗅薔薇
最近想用Laravel做一個許可權管理 但是不知道該如何下手 就查了一些資料 發現了這個擴充套件包 用著感覺真好…
費話就不多說了 直接開始
One
安裝 Laravel 5.5
composer create-project laravel/laravel Role --prefer-dist
安裝成功後在本地配置環境 我使用的是phpstudy 如何配置我就不寫了 基本都會
開啟瀏覽器出現這個介面 就OK了!
Two
根據自己專案配置Laravel .env 檔案
開始安裝擴充套件
composer 安裝:
composer require spatie/laravel-permission
釋出 migration :
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
釋出成功 會在database\migrations 下生成資料遷移檔案
資料庫版本太低 修改app裡的providers裡的AppServiceProvider.php檔案
在boot()方法裡寫
\Schema::defaultStringLength(191);
這是設定資料庫預設的字元長度
然後執行資料遷移
php artisan migrate
即 遷移成功
Three
首先,新增 Spatie\Permission\Traits\HasRoles trait 到 User 模型:
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
// ...
}
在web寫 一個測試路由
Route::get('/test','[email protected]');
去控制器裡寫一個測試 新增角色
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
class TestController extends Controller
{
public function test()
{
//新增角色
Role::create(['name' => 'writer']);
}
}
需 use Role 和 Permission 這兩個 Eloquent 模型
這時資料庫便會新增一條資料
新增許可權:
Permission::create(['name' => 'edit articles']);
將多個許可權同步賦予到一個角色:
$role->syncPermissions($permissions);
$permissions 可以是一個數組 例如:
$role->syncPermissions(
[
'edit articles',
'B'
]
);
還有其他方法可以檢視 這篇文章
然後在模板中判斷角色是否擁有許可權:
@can('edit articles')
//
@endcan
最基本的許可權已經設定好了
更多高階用法 可以檢視文件完成 如果碰到了 還會繼續更新
有問題 請留言