2017-03-01 57 views
1

我使用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所有权限创建这样AccesControl过滤器像这样的独立操作:

public function actions() 
    { 
     return [ 
      'cbaccept' => [ 
       'class' => ToggleAction::className(), 
       'modelClass' => 'app\models\base\Drawing', 
       'attribute'=>'cbaccepted', 
      ], 

如何在matchCallback中检查独立操作?

回答

0

您确定它不适用于独立操作吗?这应该。

而且回调可以更简单:

'matchCallback' => function ($rule, $action) { 
    $route = $action->controller->id . '/' . $action->id; 
    return Yii::$app->user->can($route); 
} 
+0

感谢。其实发现我的错误。我不小心分配了一个角色与权限,所以它的作品。 – naduvko