我尝试为我的某个应用程序安装yii扩展程序。我收到错误“Error 403 You are not authorized to perform this action.
”但是从我在数据库中看到的情况来看,表格被创建为“authassignment”,“authitem”,“authitemchild”,“rights”。
在“自动分配”下,我有数据
Admin 1 NULL N;
其中1是我的用户ID。这是正确的,因为我的“用户”表我有一个帐户。结构是
CREATE TABLE IF NOT EXISTS `user` (
`user_id` int(10) AUTO_INCREMENT NOT NULL,
`login_id` varchar(255) NOT NULL,
`login_name` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`level` int(3) NOT NULL DEFAULT '1',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
我已修改“config / main.php”以反映更改
'rights'=>array(
'install'=>false,
'superuserName'=>'Admin',
'userIdColumn'=>'user_id',
'userNameColumn'=>'login_id',
),
经过多次研究,我认为上述步骤是正确的。但是,当我尝试在安装后访问/rights
时。我再次面对这个问题:
**Error 403 You are not authorized to perform this action**.
这很奇怪。我检查了安装文件,没有提到这个问题。所以我想这可能是因为登录方式错了?
public function authenticate()
{
$array=$this->auth_array;
$criteria=new CDbCriteria;
$criteria->compare('email',$array['email']);
$u=User::model()->findAll($criteria);
if(count($u)==0)
{
$user = new User;
$user->email = $array['email'];
$user->login_name=$array['name'];
$user->login_id=$array['login_id'];
if($user->save()){
$this->_id=$user->user_id;
}
}else{
$this->_id=$u[0]->user_id;
}
$this->setState('user_id', $this->_id);
$this->setState('display_name',$array['display_name']);
$this->setState('name',$array['name']);
$this->setState('email',$array['email']);
$user=User::model()->findByAttributes(array('user_id'=>$this->_id));
if(count($user)>0)
{
if($user->level==1)
{
$this->setState('role', 'user');
}
else if($user->level==0)
{
$this->setState('role','admin');
}
$this->errorCode=self::ERROR_NONE;
}else{
$this->errorCode=self::ERROR_USERNAME_INVALID;
}
return !$this->errorCode;
}
请帮忙。
答案 0 :(得分:1)
您应该验证authassignment表中的id是否与user表中的id相同。两种情况都应该是1。
同时验证一旦您登录,您确实是超级用户。您可以使用isSuperuser方法检查它。如果您不是超级用户,可以通过setSuperuser(bool)方法将自己设置为超级用户。