Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Rbac错误检查权限Yii2_Php_Yii2_Rbac - Fatal编程技术网

Php Rbac错误检查权限Yii2

Php Rbac错误检查权限Yii2,php,yii2,rbac,Php,Yii2,Rbac,在我的源代码中,我有此代码用于检查用户是否具有权限。为此,我使用RBAC。在我的控制器中,我有: public function behaviors() { $behaviors['access'] = [ 'class' => AccessControl::className(), 'rules' => [ [ 'allow' => true,

在我的源代码中,我有此代码用于检查用户是否具有权限。为此,我使用RBAC。在我的控制器中,我有:

public function behaviors()
{
    $behaviors['access'] = [
         'class' => AccessControl::className(),
         'rules' => [
            [
                'allow' => true,
                'roles' => ['@'],
                'matchCallback' => function ($rule, $action) {

                    $module      = Yii::$app->controller->module->id; 
                    $action      = Yii::$app->controller->action->id;
                    $controller  = Yii::$app->controller->id;
                    $route       = "$module/$controller/$action";
                    $post = Yii::$app->request->post();
                    if (\Yii::$app->user->can($route)) {
                        return true;
                    } else {
                        Yii::$app->session->setFlash('error', 'Your user does not have access to this module.');
                        return $this->redirect('dashboard');
                    }
                }
            ],
        ],
    ];         
    return $behaviors;

}
我的问题是何时使用该函数

if (\Yii::$app->user->can($route)) { ....
Yii显示以下错误:

PHP Warning – yii\base\ErrorException
in_array() expects parameter 2 to be array, string given ....
........
 in /lxcshared/yii-develop/sacyii.git/vendor/yiisoft/yii2/rbac/DbManager.php at line 196
........
    if (isset($assignments[$itemName]) || in_array($itemName, $this->defaultRoles)) {
        return true;
    }

我遵循这条准则,但我不知道为什么会出现这个问题。

检查您的配置
authManager->defaultRoles
。它必须是数组

'authManager' => [
    ...
    'defaultRoles' => [...]
]