最簡化權限管理系統,基於 Laravel5.4 開發。因爲 Laravel5.5 發佈推遲,只好先寫個 Laravel5.4版本的,後面再升級上去。演示地址:http://any.iwanli.mephp
Any
是一個最簡化全新管理後臺模塊,包含最簡單的權限控制。最開始寫權限系統的時候是看的一個老外寫的源碼。根據他的代碼本身寫了一個 基於Laravel5.2 IAdmin
後臺,這個是最開始權限繫系統,爲了公用,全部權限都是寫的配置文件。git
iDashboard
是在 IAdmin
的基礎之上優化了設計思想和代碼結構,而且權限和路由名稱進行綁定,一箇中間件就能夠判斷全部控制器的權限。基於 Laravel5.3 開發,惟一優化的是用權限和路由別名綁定,這樣代碼寫好以後就能夠直接使用。但配置文件配置過多問題仍是沒有解決。github
Any
是在 iDashboard
經驗上重構的一個項目,以前版本的權限控制都是須要本身去定義,有沒有一種方式像 ACL 那樣自動生成權限並判斷?這樣就大大減小了去定義權限和配置。 Any
由此誕生。web
Any
的主要原理就是根據用戶訪問的路由,獲取當前訪問的控制器(controller)和方法(method),控制器加方法生成惟一權限值,當一個用戶訪問某個方法的時候中間件會判斷。若是是超級管理員,即便沒有這個權限會自動賦予權限給超級管理員角色。爲了不中間件查詢過多,因此在用戶登陸的成功以後會緩存一份當前用戶的全部權限,判斷權限的時候直接獲取緩存中,更新任何角色的權限都會更新緩存。除此以外,代碼上也進行了不少優化。數據庫
基於控制器方法權限控制緩存
多主題(目前只開發了一套,後期支持)composer
多語言(沒有實現數據多語言化)學習
這些只是基礎功能的開始,但願獲得更多的靈感優化
下載本項目代碼到本地:設計
git clone https://github.com/lanceWan/any.git
進入到項目而後 composer
安裝:
cd any composer install
配置 .env
文件:
[sudo]cp .env.example .env
Linux 和 Mac 下注意執行權限 !
配置數據庫:
DB_HOST=localhost DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret
遷移數據:
php artisan migrate --seed
OK,項目已經配置完成,直接訪問首頁而後登陸便可,不清楚路由的能夠直接去看 routes/web.php
文件。默認管理員帳號:iwanli
, 密碼:123456
。若是你是在 Linux
或 Mac
下配置的請注意相關目錄的權限,這裏我就很少說了,enjoy!
若是出現下面的錯誤:
The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.
若是你用 php artisan key:generate
生成祕鑰的時候就報這個錯誤,那麼請隨便複製一個其餘 Laravel
項目的 APP_KEY
到你報錯項目的 .env
文件中。而後正常執行命令其餘命令便可。
Any
發展離不開你們的反饋和建議,若是你們有什麼想法能夠直接在 https://github.com/lanceWan/any/issues 中提出,謝謝。
Laravel學習交流羣:312621686