Yii框架中安装srbac扩展方法
首先,下载srbac_1.3beta.zip文件和对应的blog-srbac_1.2_r228.zip
问什么要下载第二个文件,后面就知道了。
- 按照手册进行配置:
- 解压缩srbac_1.3beta.zip文件,将解压后的文件复制到你的application/protected/modules目录下,注意是modules,而不是我们经常把扩展放到的那个extension目录。
- 配置你的application的config目录下的main.php文件。在import节添加配置,如:
'import'=>array(
'application.modules.srbac.controllers.SBaseController',);
- 在modules节添加配置,如:
'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
// 必须是一个存在的路径别名
),
- 然后修改components里的authManager配置:
'authManager'=>array(
// 'class'=>'CDbAuthManager',// Manager 的类型
'class'=>'srbac.components.SDbAuthManager',
'connectionID'=>'db',//使用的数据库组
'itemTable'=>'tbl_items',// 授权项目表 (默认:authitem)
'assignmentTable'=>'tbl_assignments',// 授权分配表 (默认:authassignment)
'itemChildTable'=>'tbl_itemchildren',// 授权子项目表 (默认:authitemchild)
),
注意这里,'class'=>'srbac.components.SDbAuthManager', 手册上写的是modules.srbac.components.SDbAuthManager,
折腾半天,还是参照了blog里的例子才发现的。
- OK,到这里,配置的工作就算完成了,然后在浏览器中运行application/index.php?r=srbac
这时会跳转到安装页面,奇怪,为什么会提示找不到User.php呢?这时候前面下载的第二个文件就有用了,还是解压缩,然后再protected/models目录中找到User.php这个文件,拷贝到你的application对应的目录中。然后刷新安装页面,又提示找不到{[User]}这个表,没完了啊,继续在blog的这个例子里,protected/db目录中,打开schema.mysql.sql,里面有tbl_user表的sql,摘出来,在mysql里执行下,然后修改User.php的tableName方法为:public function tableName(){return 'tbl_user';}