Chinaunix首页 | 论坛 | 博客
  • 博客访问: 265474
  • 博文数量: 81
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 878
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-25 23:20
文章分类

全部博文(81)

文章存档

2017年(45)

2016年(20)

2015年(2)

2014年(14)

我的朋友

分类: C#/.net

2017-02-27 20:27:29

这种权限到底是怎么实现的呢?看下图表的关系

代码的具体实现:

1:根据用户的role_id进行权限列表的查询 显示响应的操作菜单

2:对数据进行展示

在if condition语句中,如果条件是两个数组变量的点形式进行比较,则必须要在最后一个变量后面加上空格,否则条件不成立。

3:显示效果如下:

这里简单在说下tp框架的rbac的实现原理:

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:在公共控制器中调用该方法 实现权限的校验

阅读(2124) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~