无法访问yii右侧扩展名

时间:2013-11-11 06:58:41

标签: yii yii-extensions

我尝试为我的某个应用程序安装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;

}

请帮忙。

1 个答案:

答案 0 :(得分:1)

您应该验证authassignment表中的id是否与user表中的id相同。两种情况都应该是1。

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