PHP權限系統使用Laravel-Permission(一)

權限系統設計


我們開發一個管理後臺系統,正常都需要開發一個權限控制列表(Access Control list,簡稱ACL)。

ACL用來授予用戶有什麼樣的權限,比如說,管理員有讀取和寫入的權限,員工只有讀取的權限或者沒權限讀取。

接下來,用一個小Demo來進行學習。

創建並配置項目

  1. 使用Composer創建一個Laravel5.7的項目,命名爲acl。

    composer create-project --prefer-dist laravel/laravel acl "5.7.*"
    
  2. 配置.env文件,連接到數據庫

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=acl
    DB_USERNAME=root
    DB_PASSWORD=
    
  3. 執行命令,生成註冊和登錄界面和路由

    php artisan make:auth
    

集成Laravel-Permission

  1. Github地址:laravel-permission

  2. 安裝Laravel-Permission包,執行命令

    composer require spatie/laravel-permission
    
  3. 使用命令遷移生成數據庫相關文件

    php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
    
  4. 使用命令生成配置文件

    php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"
    

注意數據庫版本

  1. 如果MySQL版本低於5.7.7,則需要配置字符串長度,防止出現Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes的錯誤。 修改app\Providers\AppServiceProvider.php文件。

    use Illuminate\Support\Facades\Schema;
    
    public function boot()
        {
            //
            Schema::defaultStringLength(191);
        }
    

集成Laravel Collective HTML Form構建器

  1. Github地址: LaravelCollective/html

  2. Github文檔:LaravelCollective/docs

  3. 執行安裝命令, 安裝Laravel Collective HTML Form

    composer require "laravelcollective/html":"^5.7.*"
    
  4. 配置config/app.php:

    'providers' => [
        // ...
        Collective\Html\HtmlServiceProvider::class,
        // ...
    ],
    
    'aliases' => [
        // ...
          'Form' => Collective\Html\FormFacade::class,
          'Html' => Collective\Html\HtmlFacade::class,
        // ...
    ],
    

集成Flash

  1. Github地址: laracasts/flash

  2. 執行安裝命令

    composer require laracasts/flash
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章