我正在使用AccessControl和matchCallback这样的
'access' => [
'class' => \yii\filters\AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action) {
$action = yii::$app->controller->action->id;
$controller = yii::$app->controller->id;
$route = "$controller/$action";
if (Yii::$app->user->can($route)) {
return true;
}
}
]
]
]
我对RBAC的所有权限都是这样创建的 - 控制器/操作,这适用于内联操作,但不适用于这样的独立操作:
public function actions()
{
return [
'cbaccept' => [
'class' => ToggleAction::className(),
'modelClass' => 'app\models\base\Drawing',
'attribute'=>'cbaccepted',
],
如何检查matchCallback
中的独立操作?
答案 0 :(得分:0)
您确定它不适用于独立操作吗?它应该。
你的回调可以更简单:
'matchCallback' => function ($rule, $action) {
$route = $action->controller->id . '/' . $action->id;
return Yii::$app->user->can($route);
}