最簡化許可權管理系統,基於 Laravel5.4 開發。由於 Laravel5.5 釋出推遲,只好先寫個 Laravel5.4版本的,後面再升級上去。
Any 是什麼
Any
是一個最簡化全新管理後臺模組,包含最簡單的許可權控制。最開始寫許可權系統的時候是看的一個老外寫的原始碼。根據他的程式碼自己寫了一個 基於Laravel5.2 IAdmin
後臺,這個是最開始許可權繫系統,為了公用,所有許可權都是寫的配置檔案。
iDashboard
是在 IAdmin
的基礎之上優化了設計思想和程式碼結構,並且許可權和路由名稱進行繫結,一箇中介軟體就可以判斷所有控制器的許可權。基於 Laravel5.3 開發,唯一優化的是用許可權和路由別名繫結,這樣程式碼寫好之後就可以直接使用。但配置檔案配置過多問題還是沒有解決。
Any
是在 iDashboard
經驗上重構的一個專案,之前版本的許可權控制都是需要自己去定義,有沒有一種方式像 ACL 那樣自動生成許可權並判斷?這樣就大大減少了去定義許可權和配置。 Any
由此誕生。
Any
的主要原理就是根據使用者訪問的路由,獲取當前訪問的控制器(controller)和方法(method),控制器加方法生成唯一許可權值,當一個使用者訪問某個方法的時候中介軟體會判斷。如果是超級管理員,即使沒有這個許可權會自動賦予許可權給超級管理員角色。為了避免中介軟體查詢過多,所以在使用者登入的成功之後會快取一份當前使用者的所有許可權,判斷許可權的時候直接獲取快取中,更新任何角色的許可權都會更新快取。除此之外,程式碼上也進行了很多優化。
Any 特點
- 基於控制器方法許可權控制
- 多主題(目前只開發了一套,後期支援)
- 多語言(沒有實現資料多語言化)
這些只是基礎功能的開始,希望得到更多的靈感
安裝 Any
下載本專案程式碼到本地:
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 中提出,謝謝。
github: https://github.com/lanceWan/any