auth-booster这个是一个yii框架扩展中的一个模块。是非常好用的(但是里面的说明都是英文的,所以国人用还需要改一点里面的汉化)

1、下载auth-booster这个:http://www.yiiframework.com/extension/authbooster/  这个在附件中已经上传

2、将这个模块拷贝到protected/modules/这个目录下,重新命名auth

3、修改配置文件

'modules'=>array(
....
'auth' => array(
'userClass' => 'User', // 在模型中使用管理用户表的类
'userIdColumn' => 'id', // 用户表中用户id
'userNameColumn' => 'username', //用户名称
//'defaultLayout' => 'application.modules.admin.views.layouts.column2',//默认的加载的布局,注意:如果这个没有加载就没有这个<meta charset='utf-8'>头信息,就不能插入中文到数据表中
),
),
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
'class' => 'auth.components.AuthWebUser',
//'loginUrl' => '/site/login',
// users with full access
'admins' => array('admin',),
),
'bootstrap' => array(
'class' => 'ext.bootstrap.components.Bootstrap',
'responsiveCss' => true,
'fontAwesomeCss' => true,
'enableNotifierJS' => false,
'enableBootboxJS' => false
),
'authManager' => array(
'class' => 'CDbAuthManager',
'connectionID' => 'db',
'itemTable' => '{{authitem}}',
'itemChildTable' => '{{authitemchild}}',
'assignmentTable' => '{{authassignment}}',
'behaviors' => array(
'auth' => array(
'class' => 'auth.components.AuthBehavior',
),
),
),
),

上面这些都是最基本的配置

4、导入rbac数据表

CREATE TABLE IF NOT EXISTS `tbl_authassignment` (
`itemname` varchar(64) NOT NULL comment('分配给用户的节点和authitem表中的name关联'),
`userid` varchar(64) NOT NULL comment('用户id'),
`bizrule` text,
`data` text,
PRIMARY KEY (`itemname`,`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; #这个就是节点表
CREATE TABLE IF NOT EXISTS `tbl_authitem` (
`name` varchar(64) NOT NULL comment('可以这样分配:admin.category.add/post.add/post.*'),
`type` int(11) NOT NULL comment('类型,0:操作,1:任务,2:角色'),
`description` text comment('描述'),
`bizrule` text,
`data` text,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `tbl_authitemchild` (
`parent` varchar(64) NOT NULL comment('父级authitem中类型为1:任务,2:角色的名称,这个值唯一'),
`child` varchar(64) NOT NULL comment('拥有的子节点,这个表和节点表是一对多关系'),
PRIMARY KEY (`parent`,`child`),
KEY `child` (`child`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

5、在需要验证的控制器下面的filters()

public function filters()
{
return array(
array('auth.filters.AuthFilter'),
//'accessControl', // perform access control for CRUD operations
);
}

这三张表是最基本的rbac表,其实还有一张用户表,这个不需要导入,因为既然做权限验证,应该就有自己建立的用户表

三张表的关系

rbac权限验证核心:

因为yii也是单一入口文件,所以在验证权限的时候都是非常的方便。

在访问每一个方法的时候,都可以验证这个方法用户是否有权限。

在控制器里

$name = $this->getModule()->id; // module

$name = $this->getId();  // controller

$name = $this->getAction()->id;  // action

在视图里,除了上述2个方法还可:

$name = $this->module->id; // module

$name = Yii::app()->controller->id;  // controller

$name = $this->getAction()->getId(); // action

这样组合在一起就能验证访问的操作是否有权限

tbl_authassignment 这个是表是分配给用户有哪些权限,就是操作的节点

tbl_authitem  这个表是节点表,type:0节点,1:任务,2:角色

tbl_authitemchild  这个表是任务和角色拥有哪些操作和任务

 

auth-booster配置和使用(yii1.5)的更多相关文章

  1. MongoDB的Replica Set以及Auth的配置

    http://blog.0x01.site/2017/01/13/MongoDB%E7%9A%84Replica-Set%E4%BB%A5%E5%8F%8AAuth%E7%9A%84%E9%85%8D ...

  2. mongodb主从以及auth主从 配置详解

    1.主服务器配置   #auth = true   dbpath = /data/mongodb/db logpath = /data/mongodb/log/mongodb.log   port = ...

  3. nginx下目录浏览及其验证功能配置记录

    工作中常常有写不能有网页下载东西的需求,在Apache下搭建完成后直接导入文件即可达到下载/显示文件的效果;而Nginx的目录列表功能默认是关闭的,如果需要打开Nginx的目录列表功能,需要手动配置, ...

  4. SVN版本库(访问权限)配置实例笔记

    http://blog.csdn.net/zjianbo/article/details/8578297 SVN版本库(访问权限)配置实例笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. ...

  5. MVC中的Startup.Auth.cs、BundleConfig.cs、FilterConfig.cs和RouteConfig.cs

    一.MVC中的Startup.Auth.cs.BundleConfig.cs.FilterConfig.cs和RouteConfig.cs四个文件在app_start中 <1>Bundle ...

  6. 【Linux】给Linux配置SNMP用户以及协议

    1 检查是否已经安装snmp的rpm包Ideploy:~ # rpm -aq | grep snmp libsnmp15-5.4.2.1-8.12.10.1 snmp-mibs-5.4.2.1-8.1 ...

  7. nginx下目录浏览及其验证功能、版本隐藏等配置记录

    工作中常常有写不能有网页下载东西的需求,在Apache下搭建完成后直接导入文件即可达到下载/显示文件的效果;而Nginx的目录列表功能默认是关闭的,如果需要打开Nginx的目录列表功能,需要手动配置, ...

  8. haproxy负载均衡的安装配置

    haproxy是一款可靠,高性能的并且可以支持TCP/HTTP的负载均衡器,和前面说过的nginx负载均衡类似,这里haproxy对于负载均衡来说更专业,支持的配置选项更多,稳定性也很强,甚至只需要一 ...

  9. thinkphp5的Auth权限认证实战

    thinkphp5的Auth权限认证实战 一.总结 一句话总结:基于角色的权限管理(真正做一遍,就会发现很简单,不然一直都是半懂不懂的) 角色 权限 真正做一遍,就会发现很简单,不然一直都是半懂不懂的 ...

  10. jenkins远程连接linux配置测试

    由于配置原因造成一下错误错误: jenkins.plugins.publish_over.BapPublisherException: Failed to connect session for co ...

随机推荐

  1. 简明Python3教程 19.附录 FLOSS

    FLOSS Free/Libre and Open Source Software, in short, FLOSS is based on the concept of a community, w ...

  2. WPF 设置类库项目为启动项,设置窗体跟随。

    原文:WPF 设置类库项目为启动项,设置窗体跟随. 1.添加用于启动的类Program.cs,需要一个静态的Main函数入口. using System; using System.Windows; ...

  3. 用curl访问HTTPS站点并登录(对HTTP返回的结果特别清楚)

    开发网站,少不了测试.现在的网站为了加强安全性,都启用了HTTPS协议.所谓HTTPS,也就是HTTP文本在SSL协议中传输.用curl命令行来测试HTTPS站点是个很有用的功能,写点脚本,就可以做功 ...

  4. AngularJS radio绑定与取值

    <div id="commentModal" class="modal fade" role="dialog" ng-app=&quo ...

  5. WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)

    原文:WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)      本篇将开始介绍标签工具栏的开发内容,标签工具栏可以说是Ribbon 的核心部分,应用程序所有的功能特性都会集中 ...

  6. 【msdn wpf forum翻译】TextBlock等类型的默认样式(implicit style)为何有时不起作用?

    原文:[msdn wpf forum翻译]TextBlock等类型的默认样式(implicit style)为何有时不起作用? 原文链接:http://social.msdn.microsoft.co ...

  7. linux命令行模式下实现代理上网 专题

    有些公司的局域网环境,例如我们公司的只允许使用代理上网,图形界面的很好解决就设置一下浏览器的代理就好了,但是linux纯命令行的界面就....下面简单几步就可以实现了! 一.命令行界面的一般代理设置方 ...

  8. HTTP协议入门(一)- 版本

    当我们在浏览器的地址栏输入URL后,信息会被发送到WEB服务器,服务器得到响应,将数据传输回来,展示到WEB页面上,这其中的传输方法就是HTTP协议. 一.HTTP 0.9 发布于1991年,是首个H ...

  9. Linux学习之“fork函数”

    n返回值: fork函数调用一次,但是返回两次:在子进程中返回0,在父进程中返回子进程ID,出错返回-1.通过返回值,可以确定是在父进程还是子进程中. n子进程和父进程继续执行fork调用之后的指令. ...

  10. Linux参数调优

    一.系统参数调优 打开文件 /etc/sysctl.conf ############ # 一般服务器调整 # ############ #最大连接数 net.core.somaxconn = 327 ...