这是我的访问规则:
public function accessRules() {
$controllers = array(' '); $actions = array('index');
if (Yii::app()->user->getState("State1") == true){
array_push($controllers, 'cont1','cont2');
array_push($actions, 'cont1funct1', 'cont1funct2');
}
if (Yii::app()->user->getState("State2") == true){
array_push($controllers, 'cont1');
}
if (Yii::app()->user->getState("State3") == true){
array_push($controllers, 'cont1');
array_push($actions, 'cont1funct3','cont1funct4','cont1funct5','cont1funct6');
}
if (Yii::app()->user->getState("State4") == true){
array_push($controllers, 'cont1');
}
if (Yii::app()->user->getState("State5") == true){ D
array_push($controllers, 'cont1');
}
if (Yii::app()->user->getState("State1") == false && Yii::app()->user->getState("State2") == false && Yii::app()->user->getState("State3") == false && Yii::app()->user->getState("State4") == false && Yii::app()->user->getState("State5") == false){
return array(
array('deny', // deny all users
'users' => array('*'),
),
);
}else{
$controllers = array_unique($controllers); //remove duplicates
$actions = array_unique($actions);//remove duplicates
return array(
array('allow',
'controllers'=> $controllers,
'actions' => $actions
),
array('deny', // deny all users
'users' => array('*'),
),
);
}
}
让我们假设:
我想为用户提供访问权限:
UserX 到 cont1 和功能 cont1func1
UserY 到 cont1 ,功能 cont1funct1 , cont1func2 和功能的cont2 cont2func1 , cont2func2 , cont2func3
我该怎么做?我如何定义我的行为? THX
更新:
import logging
logging.basicConfig(filename="logfile.txt")
stderrLogger=logging.StreamHandler()
stderrLogger.setFormatter(logging.Formatter(logging.BASIC_FORMAT))
logging.getLogger().addHandler(stderrLogger)
这就是我所取得的成就。但我不知道当我开始从另一个控制器添加功能时会发生什么。你可以帮帮我吗?
答案 0 :(得分:0)
功能accessRules()
应位于每个控制器内。所以这样的事情会有所帮助:
public function accessRules() {
return array(
array('allow',
'actions'=> array("create", "update", ...),
'users'=>array("@")
),
array('deny', // deny all users
'users' => array('*'),
),
);
}