0

我试图为我的一个应用程序安装 yii 扩展。我收到“ Error 403 You are not authorized to perform this action.”错误,但是从我在数据库中看到的内容来看,这些表是创建的“authassignment”、“authitem”、“authitemchild”、“rights”。

在“authassignment”下我有数据

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;

}

请帮忙。

4

1 回答 1

1

您应该验证 authassignment 表中的 id 是否与用户表中的 id 相同。在这两种情况下都应该是 1。

还要验证一旦您登录,您确实是超级用户。您可以使用 isSuperuser 方法进行检查。如果您不是超级用户,您可以通过 setSuperuser(bool) 方法将自己设置为超级用户。

于 2013-11-11T09:03:10.787 回答