TP thinkphp 权限管理功能
Posted mady
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TP thinkphp 权限管理功能相关的知识,希望对你有一定的参考价值。
目前,在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 方法,检测当前用户是否权限(所有权限验证的类都需要继承这个类)
<?php class 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 权限管理功能的主要内容,如果未能解决你的问题,请参考以下文章
视频学习笔录---ThinkPHP---TP功能类之公文管理功能