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