0

私はYiiが初めてです。このチュートリアル: http://www.yiiframework.com/wiki/328/simple-rbac/を使用して、管理者の役割を機能させました。コントローラーの accessRules 関数は次のようになります。

 public function accessRules() {
        return array(
            array('allow', // allow all users to perform 'index' and 'view' actions
                'actions' => array('index', 'view', 'create'),
                'users' => array('*'),
            ),
            array('allow', // allow authenticated user to perform 'create' and 'update' actions
                'actions' => array('update'),
                'users' => array('@'),
            ),
            array('allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions' => array('delete', 'admin'),
                'users' => array('admin'),
            ),
            array('deny', // deny all users
                'users' => array('*'),
            ),
        );
    }

私が理解していれば、管理者または削除アクションを表示しようとすると、 WebUser クラスから checkAccess 関数を実行する必要があります。私の checkAccess 関数は次のようになります。

public function checkAccess($operation,$params=array(),$allowCaching=true) {
    die("it works!");
    if (empty($this->id)) {
        // Not identified => no rights
        return false;
    }
    $admin = $this->getState("admin");

    return ($operation === 'admin' && $admin == ROLE_ADMIN || $operation !== 'admin');
}

したがって、「動作します」と表示されるはずです。しかし、私は得る

エラー 403

このアクションを実行する権限がありません。

私は何を間違えましたか?

4

1 に答える 1

0
Try changing 'users'=>array('admin') to 'roles'=>array('admin')
于 2012-12-20T22:23:24.570 に答える