0

アプリケーションの 1 つに yii 拡張機能をインストールしようとしました。「 」のエラーが発生Error 403 You are not authorized to perform this action.していますが、データベースで確認したところ、「authassignment」、「authitem」、「authitemchild」、「rights」というテーブルが作成されています。

そして、「authassignment」の下にデータがあります

Admin   1   NULL    N;

ここで、1 は私のユーザー ID です。私の「ユーザー」テーブルに関しては、これは正しいです。私は 1 つのアカウントを持っています。構造は

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 が user テーブルの ID と同じであることを確認する必要があります。どちらの場合も 1 である必要があります。

また、ログインしたら、実際にスーパーユーザーであることを確認してください。isSuperuser メソッドで確認できます。スーパー ユーザーでない場合は、setSuperuser(bool) メソッドを使用してスーパーユーザーに設定できます。

于 2013-11-11T09:03:10.787 に答える