Any-基於 Laravel5.4 新的許可權管理後臺骨架

晚黎發表於2017-08-04

最簡化許可權管理系統,基於 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 。如果你是在 LinuxMac 下配置的請注意相關目錄的許可權,這裡我就不多說了,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

相關文章