TP thinkphp 許可權管理功能

來源:互聯網
上載者:User

標籤:add   org   添加使用者   auth   welcome   log   let   color   實現   

目前,在tp架構中做許可權管理 分rbac(老)與auth(推薦)認證方式;

老的tp版本中封裝的是rbac認證;

新一點的都開始使用auth方式管理了。推薦使用此方式;

實現步驟一:引入類庫Auth.class.php

實現步驟二:建立資料表

a.菜單表CREATE TABLE `wifi_admin_nav` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘菜單表‘,  `pid` int(11) unsigned DEFAULT ‘0‘ COMMENT ‘所屬菜單‘,  `name` varchar(15) DEFAULT ‘‘ COMMENT ‘菜單名稱‘,  `mca` varchar(255) DEFAULT ‘‘ COMMENT ‘模組、控制器、方法‘,  `ico` varchar(20) DEFAULT ‘‘ COMMENT ‘font-awesome表徵圖‘,  `order_number` int(11) unsigned DEFAULT NULL COMMENT ‘排序‘,  PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=43 DEFAULT CHARSET=utf8;INSERT INTO `wifi_admin_nav` VALUES (‘1‘, ‘0‘, ‘系統設定‘, ‘Admin/ShowNav/config‘, ‘cog‘, ‘1‘);INSERT INTO `wifi_admin_nav` VALUES (‘2‘, ‘1‘, ‘菜單管理‘, ‘Admin/Nav/index‘, null, null);INSERT INTO `wifi_admin_nav` VALUES (‘7‘, ‘4‘, ‘許可權管理‘, ‘Admin/Rule/index‘, ‘‘, ‘1‘);INSERT INTO `wifi_admin_nav` VALUES (‘4‘, ‘0‘, ‘許可權控制‘, ‘Admin/ShowNav/rule‘, ‘expeditedssl‘, ‘2‘);INSERT INTO `wifi_admin_nav` VALUES (‘8‘, ‘4‘, ‘使用者組管理‘, ‘Admin/Rule/group‘, ‘‘, ‘2‘);INSERT INTO `wifi_admin_nav` VALUES (‘9‘, ‘4‘, ‘管理員列表‘, ‘Admin/Rule/admin_user_list‘, ‘‘, ‘3‘);INSERT INTO `wifi_admin_nav` VALUES (‘16‘, ‘0‘, ‘會員管理‘, ‘Admin/ShowNav/‘, ‘users‘, ‘4‘);INSERT INTO `wifi_admin_nav` VALUES (‘17‘, ‘16‘, ‘會員列表‘, ‘Admin/User/index‘, ‘‘, null);INSERT INTO `wifi_admin_nav` VALUES (‘36‘, ‘0‘, ‘文章管理‘, ‘Admin/ShowNav/posts‘, ‘th‘, ‘6‘);INSERT INTO `wifi_admin_nav` VALUES (‘37‘, ‘36‘, ‘文章列表‘, ‘Admin/Posts/index‘, ‘‘, null);b.使用者組表CREATE TABLE `wifi_auth_group` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `title` char(100) NOT NULL DEFAULT ‘‘,  `status` tinyint(1) NOT NULL DEFAULT ‘1‘,  `rules` text COMMENT ‘規則id‘,  PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT=‘使用者組表‘;INSERT INTO `wifi_auth_group` VALUES (‘1‘, ‘超級管理員‘, ‘1‘, ‘6,96,20,1,2,3,4,5,64,126,21,7,8,9,10,11,12,13,14,15,16,123,124,125,19,104,105,106,107,108,109,110,111,112,117‘);INSERT INTO `wifi_auth_group` VALUES (‘2‘, ‘產品管理員‘, ‘1‘, ‘6,96,1,2,3,4,56,57,60,61,63,71,72,65,67,74,75,66,68,69,70,73,77,78,82,83,88,89,90,99,91,92,97,98,104,105,106,107,108,118,109,110,111,112,117,113,114‘);INSERT INTO `wifi_auth_group` VALUES (‘4‘, ‘文章編輯‘, ‘1‘, ‘6,96,57,60,61,63,71,72,65,67,74,75,66,68,69,73,79,80,78,82,83,88,89,90,99,100,97,98,104,105,106,107,108,118,109,110,111,112,117,113,114‘);c.使用者與使用者組關係表CREATE TABLE `wifi_auth_group_access` (  `uid` int(11) unsigned NOT NULL COMMENT ‘使用者id‘,  `group_id` int(11) unsigned NOT NULL COMMENT ‘使用者組id‘,  UNIQUE KEY `uid_group_id` (`uid`,`group_id`),  KEY `uid` (`uid`),  KEY `group_id` (`group_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘使用者組明細表‘;INSERT INTO `wifi_auth_group_access` VALUES (‘1‘, ‘1‘);INSERT INTO `wifi_auth_group_access` VALUES (‘211‘, ‘2‘);INSERT INTO `wifi_auth_group_access` VALUES (‘203‘, ‘4‘);d.許可權表CREATE TABLE `wifi_auth_rule` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `pid` int(11) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘父級id‘,  `name` char(80) NOT NULL DEFAULT ‘‘ COMMENT ‘規則唯一標識‘,  `title` char(20) NOT NULL DEFAULT ‘‘ COMMENT ‘規則中文名稱‘,  `status` tinyint(1) NOT NULL DEFAULT ‘1‘ COMMENT ‘狀態:為1正常,為0禁用‘,  `type` tinyint(1) unsigned NOT NULL DEFAULT ‘1‘,  `condition` char(100) NOT NULL DEFAULT ‘‘ COMMENT ‘規則運算式,為空白表示存在就驗證,不為空白表示按照條件驗證‘,  PRIMARY KEY (`id`),  UNIQUE KEY `name` (`name`)) ENGINE=MyISAM AUTO_INCREMENT=127 DEFAULT CHARSET=utf8 COMMENT=‘規則表‘;INSERT INTO `wifi_auth_rule` VALUES (‘1‘, ‘20‘, ‘Admin/ShowNav/nav‘, ‘菜單管理‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘2‘, ‘1‘, ‘Admin/Nav/index‘, ‘菜單列表‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘3‘, ‘1‘, ‘Admin/Nav/add‘, ‘添加菜單‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘4‘, ‘1‘, ‘Admin/Nav/edit‘, ‘修改菜單‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘5‘, ‘1‘, ‘Admin/Nav/delete‘, ‘刪除菜單‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘21‘, ‘0‘, ‘Admin/ShowNav/rule‘, ‘許可權控制‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘7‘, ‘21‘, ‘Admin/Rule/index‘, ‘許可權管理‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘8‘, ‘7‘, ‘Admin/Rule/add‘, ‘添加許可權‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘9‘, ‘7‘, ‘Admin/Rule/edit‘, ‘修改許可權‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘10‘, ‘7‘, ‘Admin/Rule/delete‘, ‘刪除許可權‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘11‘, ‘21‘, ‘Admin/Rule/group‘, ‘使用者組管理‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘12‘, ‘11‘, ‘Admin/Rule/add_group‘, ‘添加使用者組‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘13‘, ‘11‘, ‘Admin/Rule/edit_group‘, ‘修改使用者組‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘14‘, ‘11‘, ‘Admin/Rule/delete_group‘, ‘刪除使用者組‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘15‘, ‘11‘, ‘Admin/Rule/rule_group‘, ‘分配許可權‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘16‘, ‘11‘, ‘Admin/Rule/check_user‘, ‘新增成員‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘19‘, ‘21‘, ‘Admin/Rule/admin_user_list‘, ‘管理員列表‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘20‘, ‘0‘, ‘Admin/ShowNav/config‘, ‘系統設定‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘6‘, ‘0‘, ‘Admin/Index/index‘, ‘後台首頁‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘64‘, ‘1‘, ‘Admin/Nav/order‘, ‘菜單排序‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘96‘, ‘6‘, ‘Admin/Index/welcome‘, ‘歡迎介面‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘104‘, ‘0‘, ‘Admin/ShowNav/posts‘, ‘文章管理‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘105‘, ‘104‘, ‘Admin/Posts/index‘, ‘文章列表‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘106‘, ‘105‘, ‘Admin/Posts/add_posts‘, ‘添加文章‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘107‘, ‘105‘, ‘Admin/Posts/edit_posts‘, ‘修改文章‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘108‘, ‘105‘, ‘Admin/Posts/delete_posts‘, ‘刪除文章‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘109‘, ‘104‘, ‘Admin/Posts/category_list‘, ‘分類列表‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘110‘, ‘109‘, ‘Admin/Posts/add_category‘, ‘添加分類‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘111‘, ‘109‘, ‘Admin/Posts/edit_category‘, ‘修改分類‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘112‘, ‘109‘, ‘Admin/Posts/delete_category‘, ‘刪除分類‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘117‘, ‘109‘, ‘Admin/Posts/order_category‘, ‘分類排序‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘123‘, ‘11‘, ‘Admin/Rule/add_user_to_group‘, ‘設定為管理員‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘124‘, ‘11‘, ‘Admin/Rule/add_admin‘, ‘添加管理員‘, ‘1‘, ‘1‘, ‘‘);INSERT INTO `wifi_auth_rule` VALUES (‘125‘, ‘11‘, ‘Admin/Rule/edit_admin‘, ‘修改管理員‘, ‘1‘, ‘1‘, ‘‘);

實現步驟三:項目設定檔config.php中添加

‘AUTH_CONFIG‘=>array(        ‘AUTH_ON‘ => true, //認證開關        ‘AUTH_TYPE‘ => 1, // 認證方式,1為時時認證;2為登入認證。        ‘AUTH_GROUP‘ => ‘wifi_auth_group‘, //使用者組表        ‘AUTH_GROUP_ACCESS‘ => ‘wifi_auth_group_access‘, //使用者與使用者組關係表        ‘AUTH_RULE‘ => ‘wifi_auth_rule‘, //許可權表        ‘AUTH_USER‘ => ‘wifi_admin‘//使用者表    )

實現步驟四:建立Common控制器,定義_initialize 方法,檢測目前使用者是否許可權(所有許可權驗證的類都需要繼承這個類)

<?phpclass CommonAction extends Action{    public function _initialize(){       import(‘ORG.Util.Auth‘);//載入類庫       $auth=new Auth();       if(!$auth->check(MODULE_NAME.‘-‘.ACTION_NAME,session(‘uid‘))){            $this->error(‘你沒有許可權‘);       }    }}

實現步驟五:

a.菜單管理:demo中的admin_nav

b.許可權管理:demo中的auth_rule

c.使用者組管理:同上

d.使用者管理:同上

 

demo需要的加群172020040 找我要

TP thinkphp 許可權管理功能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.