分类: C#/.net
2017-02-27 20:27:29
这种权限到底是怎么实现的呢?看下图表的关系
代码的具体实现:
1:根据用户的role_id进行权限列表的查询 显示响应的操作菜单
2:对数据进行展示
在if condition语句中,如果条件是两个数组变量的点形式进行比较,则必须要在最后一个变量后面加上空格,否则条件不成立。
3:显示效果如下:
1:创建相关的表
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;
2:配置基础设置:
'USER_AUTH_ON' =>true, //是否需要认证 'USER_AUTH_TYPE' => 1, //认证类型 1表示登录认证,2表示实时认证 'USER_AUTH_KEY' =>'authId', // 认证识别号 $_SESSION['authId'] = 用户的id 'REQUIRE_AUTH_MODULE'=> '', // 需要认证模块 'NOT_AUTH_MODULE' =>'Index', // 无需认证模块 'ADMIN_AUTH_KEY' => 'admin', //超级管理员的key $_SESSION['admin'] = xxxx; //'USER_AUTH_GATEWAY' => // 认证网关 //'RBAC_DB_DSN' => // 数据库连接DSN 'RBAC_ROLE_TABLE' => 'oa_role', // 角色表名称 'RBAC_USER_TABLE' => 'oa_role_user', // 用户表和角色表的关系 'RBAC_ACCESS_TABLE' =>'oa_access', // 权限表名称 'RBAC_NODE_TABLE' => 'oa_node', // 节点表名称
3:实现权限控制的功能
3:在公共控制器中调用该方法 实现权限的校验