首页 > 代码库 > yii之srbac详解

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了。

2、srbac中是分了四层:操作、任务、角色、用户。