【学习笔记】thinkPHP的RBAC的基本用方法
2011-02-11 17:12
351 查看
1.在数据库中创建相应的表
//(在RBAC.class.php文件里也可以找到上面的SQL语句)
2.config.php文件配置
3.创建一个公共控制器类CommonAction
写到这里其实RBAC基本功能已经出来了,大家可以测试一下,下面我们来进行一些更加详细的设置
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for think_access -- ---------------------------- CREATE TABLE `think_access` ( `role_id` smallint(6) unsigned NOT NULL, `node_id` smallint(6) unsigned NOT NULL, `level` tinyint(1) NOT NULL, `pid` smallint(6) NOT NULL, `module` varchar(50) DEFAULT NULL, KEY `groupId` (`role_id`), KEY `nodeId` (`node_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for think_node -- ---------------------------- CREATE TABLE `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, `type` tinyint(1) NOT NULL DEFAULT '0', `group_id` tinyint(3) unsigned DEFAULT '0', PRIMARY KEY (`id`), KEY `level` (`level`), KEY `pid` (`pid`), KEY `status` (`status`), KEY `name` (`name`) ) ENGINE=MyISAM AUTO_INCREMENT=83 DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for think_role -- ---------------------------- CREATE TABLE `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, `ename` varchar(5) DEFAULT NULL, `create_time` int(11) unsigned NOT NULL, `update_time` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `parentId` (`pid`), KEY `ename` (`ename`), KEY `status` (`status`) ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for think_role_user -- ---------------------------- CREATE TABLE `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; -- ---------------------------- -- Table structure for think_user -- ---------------------------- CREATE TABLE `think_user` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `account` varchar(64) NOT NULL, `nickname` varchar(50) NOT NULL, `password` char(32) NOT NULL, `bind_account` varchar(50) NOT NULL, `last_login_time` int(11) unsigned DEFAULT '0', `last_login_ip` varchar(40) DEFAULT NULL, `login_count` mediumint(8) unsigned DEFAULT '0', `verify` varchar(32) DEFAULT NULL, `email` varchar(50) NOT NULL, `remark` varchar(255) NOT NULL, `create_time` int(11) unsigned NOT NULL, `update_time` int(11) unsigned NOT NULL, `status` tinyint(1) DEFAULT '0', `type_id` tinyint(2) unsigned DEFAULT '0', `info` text NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `account` (`account`) ) ENGINE=MyISAM AUTO_INCREMENT=35 DEFAULT CHARSET=utf8;
//(在RBAC.class.php文件里也可以找到上面的SQL语句)
2.config.php文件配置
return array( //'配置项'=>'配置值' //RBAC配置增加设置 'USER_AUTH_MODEL' =>'Users', 'USER_AUTH_ON' =>true, //是否需要认证 'USER_AUTH_TYPE' =>'2', //认证类型:1为登录模式,2为实时模式 'USER_AUTH_KEY' =>'uid', //认证识别号(SEESION的用户ID名) 'ADMIN_AUTH_KEY' =>'admin', //管理员SEESION 'REQUIRE_AUTH_MODULE' =>'', //需要认证模块(模块名之间用短号分开) 'NOT_AUTH_MODULE' =>'', //无需认证模块(模块名之间用短号分开) 'REQUIRE_AUTH_ACTION' =>'', //需要认证方法(方法名之间用短号分开) 'NOT_AUTH_ACTION' =>'login,checkLogin', //无需认证方法(方法名之间用短号分开) 'USER_AUTH_GATEWAY' =>'', //认证网关 'RBAC_USER_TABLE' =>'think_role_user', //用户角色明细表 'RBAC_ROLE_TABLE' =>'think_role', //角色表 'RBAC_ACCESS_TABLE' =>'think_access', //权限表 'RBAC_NODE_TABLE' =>'think_node', //节点表 );
3.创建一个公共控制器类CommonAction
class CommonAction extends Action{ function _initialize(){ header("Content-Type:text/html; charset=utf8"); import("@.ORG.RBAC"); if(!RBAC::AccessDecision()){ echo "没有权限"; } } }
写到这里其实RBAC基本功能已经出来了,大家可以测试一下,下面我们来进行一些更加详细的设置
相关文章推荐
- jQuery学习笔记(一) 取值、赋值的基本方法
- 【Matlab学习笔记】(六)基本数据结构(矩阵定义方法)
- IOS学习笔记(八)之UIActivityIndicatorView(活动指示器视图)的基本概念和使用方法
- ThinkPHP学习笔记(七)实例化中create方法的作用,以及令牌的使用
- 【前端学习笔记】JQuery的基本思想、常用方法
- C++ Primer学习笔记:基本编译方法
- IOS学习笔记(八)之UIActivityIndicatorView(活动指示器视图)的基本概念和使用方法
- ThinkPHP学习笔记 实例化模型的四种方法
- Python语言程序设计-学习笔记2:Python编程之基本方法
- [置顶] 20151215 Hibernate学习笔记------基本的配置和使用方法
- thinkphp RBAC模型学习笔记
- struts2学习笔记一 基本配置及动态方法
- Java并发28:ThreadLocal学习笔记-简介、基本方法及应用场景
- IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法
- [android](学习笔记1)利用activity托管fragment的基本方法
- IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法
- ibatIS学习笔记---Ibatis的基本使用方法
- MyBatis学习笔记(三)——parameterType为基本类型时的使用方法
- 学习笔记11-OC基本语法和构造方法
- 大数据学习笔记之四十三 深度学习的基本方法