校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > thinkPHP5使用Rabc實現權限管理

thinkPHP5使用Rabc實現權限管理

熱門標簽:長春人工外呼系統服務商 廣東地市地圖標注 江西手機自動外呼防封系統是什么 怎么向銷售公司推銷外呼系統 高德地圖標注家 外呼系統撥打暫時無法接通 哪里辦理400電話 廣州防封卡外呼系統多少錢一個月 仁和怎么申請400開頭的電話

在之前我們已經了解了think3.2Rbac的權限管理操作,但是在thinkPHP5中thinkPHP沒有內置Rabc操作,所以我們需要使用一個thinkPHP的Rbac拓展來實現權限管理,在thinkPHP中我們可以使用gmars/tp5-rbac拓展來實現權限管理

gmars/tp5-rbac地址: https://packagist.org/package...

一:gmars/tp5-rbac安裝

composer require gmars/tp5-rbac

二:gmars/tp5-rbac使用

1:Rbac數據庫創建

gmars/tp5-rbac中我們需要使用到六張表,分別為:權限節點表(permission),permission_category(權限分組表),role(角色表),role_permission(角色權限關聯表),user(用戶表),user_role(用戶角色關聯表)

當我們使用composer將gmars/tp5-rbac下載下來之后,我們可以發現在vendorgmarstp5-rbac目錄下有一個gmars_rbac.sql文件,此文件內就為我們所需要創建表的sql

下面sql中###為你的表前綴,下面只是展示我們呢所需要的表sql,創建表gmars/tp5-rbac提供了方法來幫我們自動創建我們所需要的表

//實例化rbac
$rbac = new Rbac();
//初始化rbac所需的表,可傳入參數$db為數據庫配置項默認為空則為默認數據庫(考慮到多庫的情形)
$rbac->createTable();

上面的方法會生成rbac所需要的表,一般只執行一次,為了安全,執行后會加鎖,下次要執行需要刪除鎖文件再執行

(1):權限節點表(permission)

DROP TABLE IF EXISTS `###permission`;
CREATE TABLE `###permission` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(50) NOT NULL DEFAULT '' COMMENT '權限節點名稱',
 `type` smallint(4) unsigned NOT NULL DEFAULT '0' COMMENT '權限類型1api權限2前路由權限',
 `category_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '權限分組id',
 `path` varchar(100) NOT NULL DEFAULT '' COMMENT '權限路徑',
 `path_id` varchar(100) NOT NULL DEFAULT '' COMMENT '路徑唯一編碼',
 `description` varchar(200) NOT NULL DEFAULT '' COMMENT '描述信息',
 `status` smallint(4) unsigned NOT NULL DEFAULT '0' COMMENT '狀態0未啟用1正常',
 `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '創建時間',
 PRIMARY KEY (`id`),
 KEY `idx_permission` (`path_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='權限節點表';

(2):permission_category(權限分組表

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `###permission_category`;
CREATE TABLE `###permission_category` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '權限分組名稱',
 `description` varchar(200) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '權限分組描述',
 `status` smallint(4) unsigned NOT NULL DEFAULT '1' COMMENT '權限分組狀態1有效2無效',
 `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '權限分組創建時間',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT '權限分組表';

(3):role(角色表)

DROP TABLE IF EXISTS `###role`;
CREATE TABLE `###role` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(50) NOT NULL DEFAULT '' COMMENT '角色名',
 `description` varchar(200) NOT NULL DEFAULT '' COMMENT '角色描述',
 `status` smallint(4) unsigned NOT NULL DEFAULT '0' COMMENT '狀態1正常0未啟用',
 `sort_num` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '排序值',
 PRIMARY KEY (`id`),
 KEY `idx_role` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';

(4):role_permission(角色權限關聯表)

DROP TABLE IF EXISTS `###role_permission`;
CREATE TABLE `###role_permission` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `role_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '角色編號',
 `permission_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '權限編號',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色權限對應表';

(5):user(用戶表)

DROP TABLE IF EXISTS `###user`;
CREATE TABLE `###user` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `user_name` varchar(50) NOT NULL DEFAULT '' COMMENT '用戶名',
 `password` varchar(64) NOT NULL DEFAULT '' COMMENT '用戶密碼',
 `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手機號碼',
 `last_login_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最后一次登錄時間',
 `status` smallint(4) unsigned NOT NULL DEFAULT '0' COMMENT '狀態0禁用1正常',
 `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '賬號創建時間',
 `update_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '信息更新時間',
 PRIMARY KEY (`id`),
 KEY `idx_user` (`user_name`,`mobile`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶表';

(6):user_role(用戶角色關聯表)

DROP TABLE IF EXISTS `###user_role`;
CREATE TABLE `###user_role` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用戶id',
 `role_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '角色id',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶角色對應關系';

2:rbac的相關操作

(1)創建權限分組

//實例化rbac
$rbac = new Rbac();
//創建權限分組
$rbac->savePermissionCategory([
  'name' => '用戶管理組',
  'description' => '網站用戶的管理',
  'status' => 1
]);

當savePermissionCategory方法中包含了主鍵id時為編輯權限分組

(2)創建權限節點

//實例化rbac
$rbac = new Rbac();
//創建權限節點
$rbac->createPermission([
  'name' => '文章列表查詢',
  'description' => '文章列表查詢',
  'status' => 1,
  'type' => 1,//type為權限類型1為后端權限2為前端權限
  'category_id' => 1,//權限分組的id
  'path' => 'article/content/list',
]);

當createPermission方法中包含了主鍵id時為編輯權限節點

(3)創建角色給角色分配權限

//實例化rbac
$rbac = new Rbac();
//創建角色給角色分配權限
$rbac->createRole([
  'name' => '內容管理員',
  'description' => '負責網站內容管理',
  'status' => 1
], '1,2,3');

當createRole方法的第一個參數中包含了主鍵id時為編輯角色,第二個參數為權限節點的id拼接的字符串

(4)給用戶分配角色

//實例化rbac
$rbac = new Rbac();
//給用戶分配角色
$rbac->assignUserRole(1, [1]);

第一個參數為用戶id,第二個參數為角色id的數組,此方法會先刪除用戶之前分配的角色,然后重新給用戶分配角色

(5)獲取權限分組列表

//實例化rbac
$rbac = new Rbac();
//獲取權限分組列表
$rbac->getPermissionCategory([['status', '=', 1]]);//參數為權限分組表的條件

(6)獲取權限列表

//實例化rbac
$rbac = new Rbac();
//獲取權限列表
$rbac->getPermission([['status', '=', 1]]);//參數為權限表條件

(7)獲取角色列表

//實例化rbac
$rbac = new Rbac();
//獲取角色列表
$rbac->getRole([], true);

第一個參數為role表的條件,第二個參數為true時查詢角色分配的所有權限id

(8)刪除權限相關方法

刪除權限分組
$rbac->delPermissionCategory([1,2,3,4]);
刪除權限
$rbac->delPermission([1,2,3,4]);
刪除角色
$rbac->delRole([1,2,3,4]);

(9)權限驗證

[1]service方式

service方式因為要用到session一般要依賴于cookie,在用戶登錄后獲取用戶權限并將用戶權限進行緩存

$rbac->cachePermission(1);//參數為登錄用戶的user_id,返回值為用戶權限列表

驗證,判斷用戶對于指定的節點是否具有權限:

$rbac->can('article/channel/list');

[2]jwt方式

jwt方式在前后端分離結構用的比較普遍。在用戶登錄后需要獲取token,將下面方法獲取到的token傳遞到前端

$rbac->generateToken(1);//第一個參數為登錄的用戶id,第二個參數為token有效期默認為7200秒,第三個參數為token前綴 返回結果為

返回值示例如下:

array(3) {
 ["token"] => string(32) "4c56b80f06d3d8810b97db33a1291694"
 ["refresh_token"] => string(32) "17914241bde6bfc46b20e643b2c58279"
 ["expire"] => int(7200)
}

使用refresh_token刷新權限,有效期內使用refresh_token來刷新授權

$rbac->refreshToken('17914241bde6bfc46b20e643b2c58279');

驗證,前端將token傳遞到后端,后端校驗用戶是否具有指定節點權限

$rbac->can('article/channel/list');

總結

以上所述是小編給大家介紹的thinkPHP5使用Rabc實現權限管理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • thinkphp框架使用JWTtoken的方法詳解
  • PHP如何使用JWT做Api接口身份認證的實現
  • php實現JWT(json web token)鑒權實例詳解
  • PHP JWT初識及其簡單示例
  • php JWT在web端中的使用方法教程
  • php 后端實現JWT認證方法示例
  • thinkPHP5使用laypage分頁插件實現列表分頁功能
  • Thinkphp5框架使用validate實現驗證功能的方法
  • thinkphp5使用bootstrapvalidator進行異步驗證郵箱的示例
  • 基于ThinkPHP5框架使用QueryList爬取并存入mysql數據庫操作示例
  • ThinkPHP5框架中使用JWT的方法示例

標簽:海北 梅河口 湘西 廈門 濮陽 黔東 文山 惠州

巨人網絡通訊聲明:本文標題《thinkPHP5使用Rabc實現權限管理》,本文關鍵詞  thinkPHP5,使用,Rabc,實現,權限,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《thinkPHP5使用Rabc實現權限管理》相關的同類信息!
  • 本頁收集關于thinkPHP5使用Rabc實現權限管理的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    91在线国产福利| 日韩精品影音先锋| 色婷婷综合久久久中文字幕| 精品国产三级a在线观看| 久久99热狠狠色一区二区| 91精品在线一区二区| 亚洲国产精品综合小说图片区| 日韩成人免费电影| 色香蕉成人二区免费| 久久99精品视频| 在线视频综合导航| 一区二区三区久久久| 久久久电影一区二区三区| 国产在线精品免费av| 一区二区三区四区国产精品| 亚洲成人免费影院| 日本免费在线视频不卡一不卡二| 91色porny| 欧美巨大另类极品videosbest | 一区二区三区中文字幕精品精品| 国产美女一区二区三区| 91精品国产91久久综合桃花| 欧美一区二区视频在线观看2020| 亚洲尤物在线视频观看| 国产精品久久久久四虎| 精品国产一区二区精华| 蜜芽一区二区三区| 亚洲国产精品一区二区久久| 亚洲综合在线五月| 亚洲国产精品麻豆| 免费成人性网站| 91麻豆福利精品推荐| 欧美夫妻性生活| 欧美一级理论片| 色呦呦日韩精品| 国产欧美久久久精品影院| 日本一区二区三区久久久久久久久不 | 欧美日韩视频专区在线播放| 欧美影院精品一区| 久久综合九色综合97婷婷女人 | 午夜免费欧美电影| 国产原创一区二区| 精品国产一区二区三区久久久蜜月 | 免费日韩伦理电影| 日韩一区二区三区免费看| 麻豆久久久久久| 国产午夜一区二区三区| 一区二区中文视频| 韩国av一区二区| 日韩精品一区第一页| 亚洲精品日韩综合观看成人91| 精品国产乱码久久久久久夜甘婷婷 | 久久精品夜夜夜夜久久| 精品一区二区免费视频| 99久免费精品视频在线观看| 亚洲一区二区在线观看视频| 日韩一区精品视频| 91精品国产色综合久久久蜜香臀| 免费人成在线不卡| 欧美成人aa大片| 精品日韩一区二区| 国产高清视频一区| 日韩欧美亚洲国产精品字幕久久久| 美脚の诱脚舐め脚责91| 精品人伦一区二区色婷婷| 成人一二三区视频| 91精品国产aⅴ一区二区| 激情综合网av| 一区二区三区 在线观看视频| 欧美一级一区二区| 成人网在线播放| 天天影视网天天综合色在线播放 | 国产精品888| 精品国产一区二区亚洲人成毛片 | 亚洲午夜精品17c| 久久综合久久鬼色中文字| 日本黄色一区二区| 亚洲视频一区在线观看| 成人美女在线观看| 日韩av在线发布| 国产精品一区在线| jizz一区二区| 国产精品影视在线观看| 午夜精品久久久久久久久| 中文字幕亚洲成人| 久久久国产一区二区三区四区小说 | 国产精品亚洲一区二区三区在线| 亚洲与欧洲av电影| 自拍偷拍亚洲综合| 国产欧美日韩另类一区| 日韩精品一区二区在线| 欧美一区二区在线视频| 欧美综合亚洲图片综合区| 狠狠色丁香婷综合久久| 精品国产乱码久久久久久影片| 在线91免费看| 欧美日韩精品欧美日韩精品一| 曰韩精品一区二区| 国产精品成人一区二区艾草 | 精品国产髙清在线看国产毛片| 欧美性xxxxx极品少妇| 欧美在线影院一区二区| 欧美亚洲日本一区| 欧美日韩极品在线观看一区| 欧美日韩一区 二区 三区 久久精品| 色综合久久综合| 国产精品资源在线看| 麻豆精品视频在线观看| 蜜桃精品视频在线| 成人午夜伦理影院| 在线精品国精品国产尤物884a| 欧美美女一区二区在线观看| 欧美一级黄色片| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品久久久久精k8| 一区二区三区四区高清精品免费观看| 亚洲少妇中出一区| 毛片av一区二区| www.久久精品| 日韩视频免费观看高清完整版| av中文字幕亚洲| 亚洲成a人v欧美综合天堂| 日本强好片久久久久久aaa| 九九精品视频在线看| 国产专区综合网| 激情小说欧美图片| 91老司机福利 在线| 成人一区二区三区视频在线观看| 久久精品av麻豆的观看方式| 国产成人综合视频| 国产精品自拍毛片| 国内成人精品2018免费看| 国产传媒欧美日韩成人| 欧美在线制服丝袜| 国产精品久久一卡二卡| 水野朝阳av一区二区三区| 成人性生交大合| 日韩精品一区二| 亚洲一区二区三区在线看| 国产精品1024| 精品久久久久久久一区二区蜜臀| 国产精品久久久久婷婷 | 日本在线不卡视频| 91香蕉视频污| 中文字幕一区二区在线观看| 经典三级一区二区| 精品福利二区三区| 蜜臀av亚洲一区中文字幕| 91 com成人网| 亚洲国产成人高清精品| 91视频精品在这里| 中文字幕亚洲综合久久菠萝蜜| 粉嫩av一区二区三区在线播放 | 4438成人网| 视频在线观看国产精品| 在线综合亚洲欧美在线视频| 午夜精品福利在线| 日韩欧美国产精品| 韩国三级电影一区二区| 国产欧美一区二区精品性色| 国产成人午夜视频| 亚洲欧洲在线观看av| 色噜噜狠狠色综合欧洲selulu| 亚洲一卡二卡三卡四卡五卡| 欧美午夜在线观看| 日av在线不卡| 国产精品美女视频| 男男gaygay亚洲| 国产日本欧洲亚洲| 99久久婷婷国产综合精品电影| 一区二区三区不卡视频| 欧美精品亚洲一区二区在线播放| 性做久久久久久免费观看| 91麻豆精品国产91久久久资源速度 | 欧美大片顶级少妇| 成人高清伦理免费影院在线观看| 91精品国产91热久久久做人人| 日韩福利视频网| 亚洲欧洲三级电影| 91麻豆精品国产91久久久使用方法 | 中文字幕一区二区不卡| 4438成人网| 一本大道综合伊人精品热热| 日本特黄久久久高潮| 国产精品久久久久久久蜜臀 | 99国内精品久久| 麻豆免费精品视频| 一区二区三区精品在线观看| 欧美精品一区二区在线观看| 色香色香欲天天天影视综合网| 国产麻豆午夜三级精品| 日韩中文欧美在线| 一区二区三区在线播| 中文字幕av在线一区二区三区| 狠狠色综合色综合网络| 亚洲第一主播视频| 亚洲精品ww久久久久久p站| 国产午夜亚洲精品午夜鲁丝片| 欧美精品日韩精品| 色网综合在线观看|