權限系統設計
我們開發一個管理後臺系統,正常都需要開發一個權限控制列表(Access Control list,簡稱ACL)。
ACL用來授予用戶有什麼樣的權限,比如說,管理員有讀取和寫入的權限,員工只有讀取的權限或者沒權限讀取。
接下來,用一個小Demo來進行學習。
創建並配置項目
-
使用Composer創建一個Laravel5.7的項目,命名爲acl。
composer create-project --prefer-dist laravel/laravel acl "5.7.*"
-
配置.env文件,連接到數據庫
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=acl DB_USERNAME=root DB_PASSWORD=
-
執行命令,生成註冊和登錄界面和路由
php artisan make:auth
集成Laravel-Permission
-
Github地址:laravel-permission
-
安裝Laravel-Permission包,執行命令
composer require spatie/laravel-permission
-
使用命令遷移生成數據庫相關文件
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
-
使用命令生成配置文件
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"
注意數據庫版本
-
如果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構建器
-
Github地址: LaravelCollective/html
-
Github文檔:LaravelCollective/docs
-
執行安裝命令, 安裝Laravel Collective HTML Form
composer require "laravelcollective/html":"^5.7.*"
-
配置
config/app.php
:'providers' => [ // ... Collective\Html\HtmlServiceProvider::class, // ... ], 'aliases' => [ // ... 'Form' => Collective\Html\FormFacade::class, 'Html' => Collective\Html\HtmlFacade::class, // ... ],
集成Flash
-
Github地址: laracasts/flash
-
執行安裝命令
composer require laracasts/flash