1. 程式人生 > >Laravel5.5 使用 spatie/Laravel-permission 實現許可權分配

Laravel5.5 使用 spatie/Laravel-permission 實現許可權分配

心有猛虎 細嗅薔薇

最近想用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

在這裡插入圖片描述

在這裡插入圖片描述

最基本的許可權已經設定好了

更多高階用法 可以檢視文件完成 如果碰到了 還會繼續更新

有問題 請留言