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。当你安装完成后,这里就没用了。可以注释掉了。
再访问链接?r=srbac/authitem/authitem
就可以看到管理界面了。
随便看了下,果然很强大。
-----------------------------------------------------------------
最近学习yii框架,yii框架作为全球知名的开源框架,很大的一个优点是:有大量成熟的应用拓展。之前学习tp时,我学习了tp提供的rbac权限管理方法。今天我在yii框架的拓展中找到了同样的SRbac拓展包,它作为yii的一个模块,使用起来十分方便。下面就记录一下安装使用的流程,以备回忆。
首先准备相关的拓展包和基础程序。srbac的下载地址为:
我下载版本为:srbac_1.2_r228
官网还提供了带blog-demo的版本,这里我是自己搭建一个简单的demo,就直接下载源码包就可以了。测试过程中我为了调错还下载了两套debug的拓展包,yii-debug-toolbar和yiidebugtb,前者貌似更强大,至少下载数更多,不过运行时,我遇上一个没有render的情况,就没有加载jquery,导致不能使用,这时候,后面那个就显出优势了。两套debug方法的安装官网拓展包下载页面有详细说明,就不说了,毕竟不是srbac必须的。
接下来建立一个简单的框架骨架,考虑到第一次使用,太复杂的页面最后很可能分不清,所以最简单的初始框架可以让事情简单很多。我直接使用yiic创建了一个名为yiisrbac的应用。同时建立了一个名为yiisrbac的数据库,手工创建了一张只有userid,username和password的user表。同时往里面插入了3条初始数据,分别为:超级管理员账号:system/system系统管理员账号:admin/admin,普通用户demo/demo
View Code
接下来编辑系统config文件,连接数据库,使用脚手架gii创建usermodel,接下来就是修改components/UserIdentity.php中authenticate()方法,让应用使用数据库实现登陆
1 protected $_userid;
2 public function authenticate(){
3 $user = User::model()->find('username=?', array($this->username));
4 if($user === null){
5 $this->errorCode=self::ERROR_USERNAME_INVALID;
6 }elseif($user->password !== md5($this->password)){
7 $this->errorCode=self::ERROR_PASSWORD_INVALID;
8 }else{
9 $this->errorCode=self::ERROR_NONE;
10 $this->_userid = $user->userid;
11 }
12 return !$this->errorCode;
13 }
14 function getId(){
15 return $this->_userid;
16 }