最簡化權限管理系統,基於Laravel5.5 開發。 Laravel5.4 版本請切換到any54
分支。
Any
是一個最簡化全新管理後台模組,包含最簡單的權限控制。最開始寫權限系統的時候是看的一個老外寫的源碼。根據他的程式碼自己寫了一個基於Laravel5.2 IAdmin
後台,這個是最開始權限係系統,為了公用,所有權限都是寫好的設定檔。
iDashboard
是在IAdmin
的基礎之上優化了設計想法和程式碼結構,並且權限和路由名稱進行綁定,一個中間件就可以判斷所有控制器的權限。基於Laravel5.3 開發,唯一優化的是用權限和路由別名綁定,這樣程式碼寫好之後就可以直接使用。但設定檔配置過多問題還是沒有解決。
Any
是iDashboard
經驗上重構的項目,之前版本的權限控制都是需要自己去定義,有沒有一種方式像ACL 那樣自動產生權限並判斷?這樣就大大減少了去定義權限和配置。 Any
由此誕生。
Any
的主要原理就是根據使用者存取的路由,取得目前存取的控制器(controller)和方法(method),控制器加方法產生唯一權限值,當一個使用者存取某個方法的時候中間件會判斷。如果是超級管理員,即使沒有這個權限會自動賦予權限給超級管理員角色。為了避免中間件查詢過多,所以在使用者登入的成功之後會快取一份目前使用者的所有權限,判斷權限的時候直接取得快取中,更新任何角色的權限都會更新快取。除此之外,程式碼上也進行了許多優化。
這些只是基礎功能的開始,希望得到更多的靈感
下載本項目代碼到本地:
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!
Any
發展離不開大家的回饋和建議,如果大家有什麼想法可以直接在https://github.com/lanceWan/any/issues 中提出,謝謝。
Laravel學習交流群: 312621686