2017-03-01 56 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