ThinkPHP中RBAC类_ACCESS_LIST显示为空的解决方法
2015-10-12 15:27
627 查看
使用ThinkPHP框架中的RBAC类验证用户权限时,调用saveAccessList方法会输出一个数组,_ACCESS_LIST显示的是该用户的所属权限,如果为空则表示没有权限。
2、分配时不必勾选,在PHP后端处理时自动根据子级节点数据添加父级节点信息。
有少部分童鞋可能也勾上了父权限,甚至也保存了父节点信息,但_ACCESS_LIST还是为空怎么办?小云我就遇到了这个问题。折腾了半天发现是建表出问题了。
原因分析:
终极原因就是think_access数据表中只保存了方法级别的角色——节点对应信息,而没有保存控制器——节点和应用——节点的数据。解决方法:
1、分配子级权限时记得勾选父级节点。2、分配时不必勾选,在PHP后端处理时自动根据子级节点数据添加父级节点信息。
有少部分童鞋可能也勾上了父权限,甚至也保存了父节点信息,但_ACCESS_LIST还是为空怎么办?小云我就遇到了这个问题。折腾了半天发现是建表出问题了。
原因分析:
有些字段的外键没有创建,导致数据调不到。解决方法:
除了user表可以自建以外,其他四个表结构直接复制Rbac.class.php里的内容即可。这里贴上表结构,需要的自己复制:// 角色-节点中间表 CREATE TABLE IF NOT EXISTS `think_access` ( `role_id` smallint(6) unsigned NOT NULL, `node_id` smallint(6) unsigned NOT NULL, `level` tinyint(1) NOT NULL, `module` varchar(50) DEFAULT NULL, KEY `groupId` (`role_id`), KEY `nodeId` (`node_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; // 节点表 CREATE TABLE IF NOT EXISTS `think_node` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `title` varchar(50) DEFAULT NULL, `status` tinyint(1) DEFAULT '0', `remark` varchar(255) DEFAULT NULL, `sort` smallint(6) unsigned DEFAULT NULL, `pid` smallint(6) unsigned NOT NULL, `level` tinyint(1) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `level` (`level`), KEY `pid` (`pid`), KEY `status` (`status`), KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; // 角色表 CREATE TABLE IF NOT EXISTS `think_role` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `pid` smallint(6) DEFAULT NULL, `status` tinyint(1) unsigned DEFAULT NULL, `remark` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `pid` (`pid`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; // 角色-用户中间表 CREATE TABLE IF NOT EXISTS `think_role_user` ( `role_id` mediumint(9) unsigned DEFAULT NULL, `user_id` char(32) DEFAULT NULL, KEY `group_id` (`role_id`), KEY `user_id` (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
相关文章推荐
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- ThinkPHP关联模型操作实例分析
- thinkphp3.0 模板中函数的使用
- ThinkPHP采用<volist>实现三级循环代码实例
- Thinkphp模板标签if和eq的区别和比较实例分析
- 合并ThinkPHP配置文件以消除代码冗余的实现方法
- ThinkPHP中自定义目录结构的设置方法
- ThinkPHP控制器详解
- ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
- ASP.NET对HTML页面元素进行权限控制(二)
- 解析thinkphp中的M()与D()方法的区别
- ASP.NET对HTML页面元素进行权限控制(一)
- ThinkPHP采用模块和操作分析
- Thinkphp模板中使用自定义函数的方法
- linux下使用ThinkPHP需要注意大小写导致的问题
- ThinkPHP中FCKeditor编辑器的使用方法
- thinkphp的CURD和查询方式介绍
- THINKPHP支持YAML配置文件的设置方法
- Thinkphp中import的几个用法详细介绍
- 浅谈thinkphp的实例化模型