yii之srbac详解
一、安装篇
1、下载http://www.yiiframework.com/extension/srbac/ 将解压得到的srbac文件夹放在moudles目录下。
2、在项目的主配置文件中mai.php:
'modules'=>array(
// uncomment the following to enable the Gii tool 'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'123123',
// If removed, Gii defaults to localhost only. Edit carefully to taste.
'ipFilters'=>array('127.0.0.1','::1'),
), 'srbac' => array(
'userclass'=>'User', //default: User
'userid'=>'userid', //default: userid
'username'=>'username', //default:username
'delimeter'=>'@', //default:-
'debug'=>false, //default :false
'pageSize'=>10, // default : 15
'superUser' =>'Authority', //default: Authorizer
'css'=>'srbac.css', //default: srbac.css
'layout'=>
'application.views.layouts.main', //default: application.views.layouts.main,
//must be an existing alias
'notAuthorizedView'=> 'srbac.views.authitem.unauthorized', // default:
//srbac.views.authitem.unauthorized, must be an existing alias
'alwaysAllowed'=>array( //default: array()
'SiteLogin','SiteLogout','SiteIndex','SiteAdmin',
'SiteError', 'SiteContact','UserIndex'),
'userActions'=>array('Show','View','List'), //default: array()
'listBoxNumberOfLines' => 15, //default : 10 'imagesPath' => 'srbac.images', // default: srbac.images 'imagesPack'=>'noia', //default: noia 'iconText'=>true, // default : false 'header'=>'srbac.views.authitem.header', //default : srbac.views.authitem.header,
//must be an existing alias 'footer'=>'srbac.views.authitem.footer', //default: srbac.views.authitem.footer,
//must be an existing alias 'showHeader'=>true, // default: false 'showFooter'=>true, // default: false
'alwaysAllowedPath'=>'srbac.components', // default: srbac.components
// must be an existing alias )
), ),
'import'=>array(
'application.models.*',
'application.components.*',
'application.modules.srbac.controllers.SBaseController',
),
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
), 'authManager' => array(
'class'=>'srbac.components.SDbAuthManager',
// The database component used
'connectionID'=>'db',
// The itemTable name (default:authitem)
'itemTable'=>'authitem',
// The assignmentTable name (default:authassignment)
'assignmentTable'=>'authassignment',
// The itemChildTable name (default:authitemchild)
'itemChildTable'=>'authitemchild',
), // uncomment the following to use a MySQL database 'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=demo4',
'emulatePrepare' => true,
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
),
配置完毕,还需要一个User模型,至少含有userid,username两个选项,与上面的配置文件中保持一致。用gii工具生成User模型。通过域名/index.php/srbac进行访问进入安装界面,以上选项都具备时,安装成功。
二、使用篇
1、使用之前的几个小问题。
(1)界面中文化
将srbac/message下的zh文件夹复制一份为zh_cn,在main.php中添加配置选项'language'=>'zh_cn'即可。
(2)自动检测,如果没有自动检测,在需要调用权限的检查的方法时候都要进行添加代码的检测,如Yii::app()->user->checkAccess('createPost'),满足了才继续向下执行。开启自动检测需要下面两个条件:
将配置文件中的 'debug'选项设置为false,如上所示;
然后将components组件中的Controller.php中的:
class Controller extends CController
改为:
class Controller extends SBaseController
这样就会自动进行检测了。并且只有继承了SBaseController,才能在界面中使用自动生成opreation和task的功能。
(3)设置只有超级管理员才可以访问Srbac,安装完成后默认的都可以访问。
在配置文件中有这个选项:'superUser' =>'Authority', 这个Authority就是一个管理srbac的唯一的一个角色,只要将这个角色分配给一个特定的用户,那么就只有这个用户可以访问srbac了。
(4) 明确这个srbac只是一个工具,更方便的来实现rbac,用yii单纯的代码一样可以完成工作。比如在配置好了上面的选项以后,如果用代码生成规则如下:
$auth=Yii::app()->authManager;
$auth->createOperation('createPost','create a post');
$auth->createOperation('readPost','read a post');
$auth->createOperation('updatePost','update a post');
$auth->createOperation('deletePost','delete a post');
$bizRule='return Yii::app()->user->id==$params["post"]->authID;';
$task=$auth->createTask('updateOwnPost','update a post by author himself',$bizRule);
$task->addChild('updatePost');
这些数据将会写入数据表中,并且在这个Srbac也可以读到这些数据。
2、srbac中是分了四层:操作、任务、角色、用户。
yii之srbac详解的更多相关文章
- Yii::app()方法详解
Yii::app()方法详解 1.Yii::app()返回的是一个当前框架应用程序的对象 2.Yii::app()是framework/web/CWebApplication.php类实例化的对象,所 ...
- 干货:yii日志功能详解
转载请注明来自souldak,微博:@evagle 一.基本日志功能 详细的介绍查看官网的document:http://www.yiiframework.com/doc/guide/1.1/en/t ...
- yii框架AR详解
虽 然Yii DAO可以处理事实上任何数据库相关的任务,但很可能我们会花费90%的时间用来编写一些通用的SQL语句来执行CRUD操作(创建,读取,更新和删除). 同时我们也很难维护这些PHP和SQL语 ...
- matlab-霍夫变换详解(判断正方形长方形)
霍夫变换 霍夫变换是1972年提出来的,最开始就是用来在图像中过检测直线,后来扩展能检测圆.曲线等. 直线的霍夫变换就是 把xy空间的直线 换成成 另一空间的点.就是直线和点的互换. 我们在初中数学中 ...
- centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解
centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解 操作系统:centos 7.2 x86_64 安装walle系统服务端 1.以下安装,均在宿主机( ...
- Yii2 教程 - yii2-redis 扩展详解
该教程已被合并到<Yii2 权威指南中文版>中!Yiichina 教程地址为<yii2-redis 扩展详解>! 一.简介 yii2-redis 扩展为 Yii2 框架提供了 ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
随机推荐
- TreeMap 排序
一.TreeMap TreeMap 默认排序规则:按照key的字典顺序来排序(升序) 当然,也可以自定义排序规则:要实现Comparator接口. 用法简单,先看下下面的demo public cla ...
- BAPI
MM模块 1. BAPI_MATERIAL_SAVEDATA 创建物料主数据 注意参数EXTENSIONIN的使用,可以创建自定义字段 例如:WA_BAPI_TE_MARA-MATERIAL = IT ...
- kontalk
Site: http://kontalk.org/ Code: https://github.com/kontalk/androidclient
- Android动态加载技术初探
一.前言: 现在,已经有实力强大的公司用这个技术开发应用了,比如淘宝,大众点评,百度地图等,之所以采用这个技术,实际上,就是方便更新功能,当然,前提是新旧功能的接口一致,不然会报Not Found等错 ...
- GNOME3启动时出错:Oh no! Something has gone wrong.Logout!
今天用虚拟机安装debian7.1,在启动的时候遇到登录失败的问题,用GNOME Classic可以登录,特地记录如下: 原文出处:http://r3dux.org/2011/11/how-to-fi ...
- [React] React Fundamentals: First Component
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Openstack中间DVR Part1 -- 东西走向的交通处理
作者:Liping Mao 发表于:2014-07-04 版权声明:能够随意转载.转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 在Openstack中L3router会造成流量集中 ...
- 合并两个vectcor——2013-08-26
vector<int> v1; vector<int> v2; for(int i=0; i<5; i++) { v1.push_back(i); if(i%2==1) ...
- 一个卡片式的ViewPager,带你玩转ViewPager的PageTransformer属性!
ViewPager的基本用法不必多说,这都很简单,我们可以在ViewPager中加载一个ImageView,也可以加载一个Fragment,这都是目前非常常见的用法.那么我今天说的是ViewPager ...
- Android开发之从网络URL上下载JSON数据
网络下载拉取数据中,json数据是一种格式化的xml数据,非常轻量方便,效率高,体验好等优点,下面就android中如何从给定的url下载json数据给予解析: 主要使用http请求方法,并用到Htt ...