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