摘要:基于擴展包實現的權限控制模塊遷移到其他項目中的方法大部分的項目中,都需要權限控制,我們的項目用的是的框架,基于擴展包,寫了一個通用的權限控制模塊,方便后續其他項目需要時可用直接遷移使用。拷貝權限控制中間件。
Laravel5.1基于Entrust擴展包實現的RBAC權限控制模塊(遷移到其他項目中的方法)
大部分的項目中,都需要權限控制,我們的項目用的是Laravel5.1的框架,基于Entrust擴展包,寫了一個通用的RBAC權限控制模塊,方便后續其他項目需要時可用直接遷移使用。
github地址:https://github.com/NancyLin/l...
項目地址:git@github.com:NancyLin/laravel-rbac.git
注意,如果要把項目下到自己的電腦上測試,修改.env的數據庫設置,將storage和bootstrap/cache 目錄更改為可讀寫可執行的權限。
要把RBAC模塊遷移到自己的項目中方法如下: (1)安裝配置Entrust擴展包具體的安裝配置方法請看以下鏈接,這里不做說明
https://github.com/Zizaco/entrust
(2)安裝配置好后,根據我們自己的實際需求,更改相關的數據表字段。# 用戶表增加是否超級管理員 ALTER TABLE `users` ADD COLUMN `is_super` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "是否超級管理員"; # 權限表增加父類菜單顯示、 ALTER TABLE `permissions` ADD COLUMN `p_id` INT(10) NOT NULL DEFAULT 0 COMMENT "父類菜單ID" AFTER `id`; # 權限表增加是否菜單顯示 ALTER TABLE `permissions` ADD COLUMN `is_menu` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "是否菜單顯示" AFTER `description`; # 權限表增加是否菜單顯示 ALTER TABLE `permissions` ADD COLUMN `sort` TINYINT(4) NOT NULL DEFAULT 0 COMMENT "排序" AFTER `is_menu`; # 權限表中display_name字段不允許為空 ALTER TABLE `permissions` Modify COLUMN `display_name` VARCHAR(255) NOT NULL DEFAULT "" COMMENT "顯示名稱"; # 權限表中description字段不允許為空 ALTER TABLE `permissions` Modify COLUMN `description` VARCHAR(255) NOT NULL DEFAULT "" COMMENT "描述";(3)更改配置文件
config/entrust.php,指定相應的 role 和 permission 的 model。
"role" => "AppModelsRole", "permission" => "AppModelsPermission",
.env, 更改CACHE_DRIVER
CACHE_DRIVER=array(4)注冊權限控制中間件
此份demo中,我們對于需要進行權限控制的控制器都采用中間件方式,需要在 app/Http/Kernel.php 的 $routeMiddleware 中注冊中間件。
$routeMiddleware = [ .... //權限中間件 "permission" => AppHttpMiddlewareAuthPermission::class, ](5)在 User 模型中引入EntrustUserTrait
在此demo中,在 appUser.php 中增加以下代碼:
use ZizacoEntrustTraitsEntrustUserTrait; class User extends Model implements AuthenticatableContract, CanResetPasswordContract { ... use EntrustUserTrait; ... }(6)注冊相關模塊的路由
在appHttproutes.php 中注冊相關的路由
Route::group(["middleware" => ["auth"]], function(){ Route::get("home", "HomeController@index"); Route::controller("check", "CheckController"); Route::controller("load", "LoadBaseDataController"); Route::get("user", "RbacUserController@index"); Route::controller("user", "RbacUserController"); Route::get("role", "RbacRoleController@index"); Route::controller("role", "RbacRoleController"); Route::get("permission", "RbacPermissionController@index"); Route::controller("permission", "RbacPermissionController"); });(7)將RBAC相關模塊的代碼文件或文件夾對應地拷貝到自己的項目中
具體相關模塊文件或文件夾如下:
拷貝 ==appHttpControllersRbac== 下的所有相關模塊控制器。
拷貝 ==appHttpControllersAdminController.php== 管理通用控制器,要走權限控制中間件的控制器,都可以繼承該類。
拷貝 ==appHttpControllersCheckController.php== 驗證數據控制器。
拷貝 ==appHttpControllersLoadBaseDataController.php== 加載基礎數據控制器。
拷貝 ==appHttpMiddlewareAuthPermission.php== 權限控制中間件。
拷貝 ==appModelsRole.php== 角色model。
拷貝 ==appModelsPermission.php== 權限model。
拷貝 ==appPresentersRbacPresenter.php== Rbac視圖邏輯處理類。
拷貝 ==appRepositoriesRepository.php== 數據model基礎邏輯處理類。
拷貝 ==appRepositoriesUserRepository.php== 用戶model基礎邏輯處理類。
拷貝 ==appRepositoriesRoleRepository.php== 角色model基礎邏輯處理類。
拷貝 ==appRepositoriesPermissionRepository.php== 權限model基礎邏輯處理類。
拷貝 ==publiccss== 下的所有文件和文件夾,前臺使用的插件的一些css文件(有些直接使用插件的官網地址,如果加載太慢,可將其下載到本地項目)。
拷貝 ==publicjs== 下的所有文件和文件夾,前臺使用的插件的一些js文件(有些直接使用插件的官網地址,如果加載太慢,可將其下載到本地項目)以及相關模塊的js文件。
拷貝 ==resourcesviewsrbac== 文件夾,里面包含相關模塊的view模板文件。
拷貝 ==resourcesviewserrors== 文件夾,里面包含相關模塊沒有權限時跳轉的view模板文件。
拷貝 ==resourcesviewslayouts== 文件夾,里面包含相關模塊的通用模塊的view模板文件。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26100.html
摘要:更多擴展包中有豐富的擴展包來幫你完成幾乎任何你想實現的功能。我們不能把所有的擴展包都整理出來,然而,這里還是列出了一些很有用的。總之,你幾乎總是能夠找到一個擴展包可以解決你當前的問題。 Laravel 是一個非常流行且簡單易用的PHP框架,它提供了很多基礎的工具(如 RESTful 路由、內置的ORM、模版等)使你能夠快速的創建應用。這意味著你可以花費更少的時間來建立應用程序的模版,給...
摘要:查找保存下載用搭建自己的緩存倉庫權限管理的好選擇基于封裝的后臺管理系統,支持手機和端訪問支付寶風格的驗證器后臺系統微信接口的部署腳本開發的博客系統百度推送自動記錄用戶行為擴展一個項目管理系統根據生成對應導航的狀態 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...
摘要:基于角色的權限管理權限管理,基于角色的訪問控制,就是用戶通過角色與權限進行關聯。這樣,就構造成用戶角色權限的授權模型。角色可以理解為一定數量的權限的集合,權限的載體。版主可管理版內的帖子可管理版內的用戶等,這些是權限。 RBAC-基于角色的權限管理 RBAC權限管理 RBAC(Role-Based Access Control,基于角色的訪問控制),就是用戶通過角色與權限進行關聯。簡...
摘要:是一個用語言打造的輕量級開源訪問控制框架,目前在開源。采用了元模型的設計思想,支持多種經典的訪問控制方案,如基于角色的訪問控制基于屬性的訪問控制等。一個專為定制的的擴展包。 PHP-Casbin 是一個用 PHP 語言打造的輕量級開源訪問控制框架( https://github.com/php-casbin... ),目前在 GitHub 開源。PHP-Casbin 采用了元模型的設計...
摘要:近來部門接到一個外包項目,是基于現有的系統做一個知識文檔庫,類似于百度網盤一樣的功能,只是在角色和權限上與網盤不同,這個項目我們部門稱為,,難點就在于文件的權限管理。 ??近來部門接到一個外包項目,是基于現有的系統做一個知識文檔庫,類似于百度網盤一樣的功能,只是在角色和權限上與網盤不同,這個項目我們部門稱為KM,Knowledge Manager ,難點就在于文件的權限管理。 ??以下...
閱讀 3228·2021-11-15 11:37
閱讀 2449·2021-09-29 09:48
閱讀 3813·2021-09-22 15:55
閱讀 3014·2021-09-22 10:02
閱讀 2636·2021-08-25 09:40
閱讀 3225·2021-08-03 14:03
閱讀 1691·2019-08-29 13:11
閱讀 1570·2019-08-29 12:49