当前位置: 首页 > web开发 > PHP > 正文

ThinkPHP RBAC官网的例子详解

时间:2014-04-06

一直想学习RBAC,又看了官网的例子,又百度,没找到合适的教程。所以就只能自己研究了,就拿官网的例子来说吧

think_access表

作用是看某个组是否有权限访问某个模块下的方法或者访问某个模块,这个表少一个pid字段,自己添加就可以了

think_node表,节点表

作用是把所有需要的模块,模块下的方法都添加进来管理,用这个也可以直接读取成后台的导航

name字段是模块,方法的名称,比如Index模块,index方法等,
 

pid,这个模块或者方法的父id,

level,级别,一般项目名是1,模块是2,方法是3

正常先添加项目名,pid为0,level为1,status肯定是1了
 

一般都有个默认的Index模块,Index模块下有默认的index方法,

所以,插入Index,pid为项目名的id,level为2,再插入index,pid为模块的id,level为3。

think_role为组的表

think_user(自己建的,可以用别的名称,记得在配置文件里改掉),用户表
 

think_role_user是用户表和组表的关联。

接下来,在Lib下新建IndexAction,PublicAction,CommonAction

然后复制官网RBAC例子里的Conf下的config.php中的内容到自己的项目里,

关于RBAC所有的配置

'USER_AUTH_ON'              =>  true,

'USER_AUTH_TYPE'=>  2,// 默认认证类型 1 登录认证 2 实时认证

'USER_AUTH_KEY'             =>  'authId',// 用户认证SESSION标记

'ADMIN_AUTH_KEY'=>  'administrator',

'USER_AUTH_MODEL'           =>  'User',// 默认验证数据表模型,如果用户表名称不是User的话自己改

'AUTH_PWD_ENCODER'          =>  'md5',// 用户认证密码加密方式

'USER_AUTH_GATEWAY'         =>  '/Public/login',// 默认认证网关

'NOT_AUTH_MODULE'           =>  'Public',// 默认无需认证模块

'REQUIRE_AUTH_MODULE'       =>  '',// 默认需要认证模块

'NOT_AUTH_ACTION'           =>  '',// 默认无需认证操作

'REQUIRE_AUTH_ACTION'       =>  '',// 默认需要认证操作

'GUEST_AUTH_ON'             =>  false,    // 是否开启游客授权访问

'GUEST_AUTH_ID'             =>  0,        // 游客的用户ID

'DB_LIKE_FIELDS'            =>  'title|remark',

'RBAC_ROLE_TABLE'           =>  'think_role',

'RBAC_USER_TABLE'           =>  'think_role_user',

'RBAC_ACCESS_TABLE'         =>  'think_access',

'RBAC_NODE_TABLE'           =>  'think_node',