分类: 系统运维
2012-11-19 15:21:35
第一步,下载Srbac,下载地址:;
第二步,解压至protected/modules/srbac;
第三步,配置config/main.php,如下:
'import'=>array(
'application.models.*',
'application.components.*',
'application.extensions.*',
'application.modules.srbac.controllers.SBaseController',
),
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
),
'authManager'=>array(
'class'=>'CDbAuthManager',
'connectionID'=>'db',
'itemTable'=>'items',
'assignmentTable'=>'assignments',
'itemChildTable'=>'itemchildren',
),
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=cms',
'emulatePrepare' => true,
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',
),
),
'modules'=>array(
'srbac' => array(
'userclass'=>'User',
'userid'=>'id',
'username'=>'username',
'debug'=>true,
'pageSize'=>10,
'superUser' =>'Authority',
'css'=>'srbac.css',
'layout'=>'application.views.layouts.main',
'notAuthorizedView'=>'srbac.views.authitem.unauthorized',
'alwaysAllowed'=>array('SiteLogin','SiteLogout','SiteIndex','SiteAdmin','SiteError', 'SiteContact'),
'userActions'=>array('Show','View','List'),
'listBoxNumberOfLines' => 15,
'imagesPath' => 'srbac.images',
'imagesPack'=>'noia',
'iconText'=>true,
'header'=>'srbac.views.authitem.header',
'footer'=>'srbac.views.authitem.footer',
'showHeader'=>true,
'showFooter'=>true,
'alwaysAllowedPath'=>'srbac.components',
),
),
Srbac 可以在如下地址下载:
Yii 扩展页面:
Google 项目页面:
也可以使用如下命令签出最新的开发代码:
svn checkout srbac-read-only
安装 srbac要安装 srbac 模块,首先解压压缩文件到Yii应用的模块目录,如果把srbac作为一个模块的话,就要在protected文件夹下新建一个文件夹modules,然后把解压得到的文件夹复制过来。
然后编辑配置文件如下:
在protected/config/main中
首先应该有db的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=blog', 'emulatePrepare' => true, 'username' => 'root', 'password' => 'guohao', 'charset' => 'utf8', 'tablePrefix' => 'tbl_', ), 配置authManager组件: 'authManager'=>array( 'class'=>'CDbAuthManager',// Manager 的类型 'connectionID'=>'db',//使用的数据库组件 'itemTable'=>'items',// 授权项目表 (默认:authitem) 'assignmentTable'=>'assignments',// 授权分配表 (默认:authassignment) 'itemChildTable'=>'itemchildren',// 授权子项目表 (默认:authitemchild) ), items,assignments,itemchildren三个表的名字可随意改动。表结构请到framework/web/auth/schema.sql 'modules'=>array( 'srbac' => array( 'userclass'=>'User', //可选,默认是 User 'userid'=>'id', //可选,默认是 userid 'username'=>'username', //可选,默认是 username 'debug'=>true, //可选,默认是 false 'pageSize'=>10, //可选,默认是 15 'superUser' =>'Authority', //可选,默认是 Authorizer 'css'=>'srbac.css', //可选,默认是 srbac.css 'layout'=> 'application.views.layouts.main', //可选,默认是 // application.views.layouts.main, 必须是一个存在的路径别名 'notAuthorizedView'=> 'srbac.views.authitem.unauthorized', // 可选,默认是unauthorized.php //srbac.views.authitem.unauthorized, 必须是一个存在的路径别名 'alwaysAllowed'=>array( //可选,默认是 gui 'SiteLogin','SiteLogout','SiteIndex','SiteAdmin', 'SiteError', 'SiteContact'), 'userActions'=>array(//可选,默认是空数组 'Show','View','List'), 'listBoxNumberOfLines' => 15, //可选,默认是10 'imagesPath' => 'srbac.images', //可选,默认是 srbac.images 'imagesPack'=>'noia', //可选,默认是 noia 'iconText'=>true, //可选,默认是 false 'header'=>'srbac.views.authitem.header', //可选,默认是 // srbac.views.authitem.header, 必须是一个存在的路径别名 'footer'=>'srbac.views.authitem.footer', //可选,默认是 // srbac.views.authitem.footer, 必须是一个存在的路径别名 'showHeader'=>true, //可选,默认是false 'showFooter'=>true, //可选,默认是false 'alwaysAllowedPath'=>'srbac.components', //可选,默认是 srbac.components // 必须是一个存在的路径别名 ), ), |
//srbac作为一个模块,所以要声明一下才能使用。
查看srbac属性列表可以得到每个属性的详细信息。
导入 SbaseController(for using the auto checking access feature):
1 2 3 4 | 'import'=>array( 'application.modules.srbac.controllers.SBaseController', ), |
这样就配置完了。接着你可以访问
进入安装页面后如果有变红的项目,说明你的配置有问题,请修改为正确的配置。然后点击安装。
然 后完成安装,显示成功后,你进入项目,找到protected\modules\srbac \views\authitem\install可以把这个文件夹删掉,也可以重命名。然后找到protected\modules\srbac \controllers\AuthitemController.php
修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | protected function beforeAction($action) { //if(!$this->module->isInstalled() && $action->id != "install") { // $this->redirect(array("install")); // $this->actionInstall(); // return false; //} if($this->module->debug) { return true; } if( Yii::app()->user->checkAccess(Helper::findModule('srbac')->superUser) || !Helper::isAuthorizer()) { return true; } else { parent::beforeAction($action); } } |
因为这个地方判断每次都是新安装srbac。当你安装完成后,这里就没用了。可以注释掉了。
再访问链接
就可以看到管理界面了。
随便看了下,果然很强大。