我在一个业务的Controller里是用filter里写权限控制的
/**
* @return array action filters
*/
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
);
}
/**
* Specifies the access control rules.
* This method is used by the 'accessControl' filter.
* @return array access control rules
*/
public function accessRules()
{
return array(
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('chaxun','overlookimg'),
'users'=>array('*'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
里面的一个chaxun业务是是这样写的
/*
* 寝室查询 通过寝室号
* 需要返回 寝室所属学院+寝室状况+寝室最近三周的分数+最后一次的评语
*/
public function actionChaxun()
{
if(isset($_POST['roomid'])&&$_POST['roomid']!='')
{
$rId= trim(strval($_POST['roomid'])); //将查询的寝室号赋给一个字符
if(Room::model()->verificationRoomId($rId)) //如果数据库里存在该寝室号
{
$orgid=$rId;
$academyName= Room::model()->getAcademyId($rId); //通过寝室号得到学院
$rStatus= Room::model()->getRoomStatus($rId); //通过寝室号得到寝室现在的状态
//$academyName= Academy::model()->getAcademyName($acadId); //通过寝室号得到学院名称
$roomScores= RoomScore::model()->getLastRoomScores($rId); //通过寝室号得到寝室的最近三周的分数和评语,返回的是数组
}else{
$orgid=$rId;
//$acadId= '不存在该宿舍信息'; //通过寝室号得到学院号
$rStatus= ''; //通过寝室号得到寝室现在的状态
$academyName= '不存在该宿舍信息'; //通过寝室号得到学院名称
$roomScores= ''; //通过寝室号得到寝室的最近三周的分数和评语,返回的是数组
}
}else{
$orgid='';
//$acadId= ''; //通过寝室号得到学院号
$rStatus= ''; //通过寝室号得到寝室现在的状态
$academyName= ''; //通过寝室号得到学院名称
$roomScores= ''; //通过寝室号得到寝室的最近三周的分数和评语,返回的是数组
}
$this->render('chaxun',array(
'dataOrgId'=>$orgid, //原来的查询寝室号
'dataAcademyName'=>$academyName, //学院名称
'dataRoomStatus'=>$rStatus, //寝室的现在的状况
'dataRoomScores'=>$roomScores, //得到的死寝室最近三周的分数和评语,数组
));
}
问题的关键是我放在本地的phpnow里执行是ok的,但是放到服务器(linux)里就出现问题了。当查询的时候就跳到系统登录页面里,登录后查询就出现如下提示:
[b]CHttpException[/b]
You are not authorized to perform this action.
很想知道是怎么回事?求助。