2017-10-11 30 views
0

하나의 동작에서 다중 규칙을 사용하고 싶습니다.yii2 : 동작에 대한 다중 규칙을 추가하는 방법

어떻게이 문제를 해결할 수 있습니까?

public function behaviors() 
{ 
    return [ 
     'access' => [ 
      'class' => \yii\filters\AccessControl::className(), 
      'rules' => [ 
        [ 
        'actions' => ['file'], 
        'allow' => true, 
        'roles' => ['user2'], 
       ], 
        [ 
        'actions' => ['file'], 
        'allow' => false, 
        'roles' => ['document'], 
       ], 
      ], 
+0

귀하는 귀하의 요구 사항을 정교하게 처리 할 수 ​​있습니까? 나는 파일이 user2에만 액세스 할 수 있어야한다는 것을 이해했기 때문에. 이게 필요한거야? – Sucharitha

답변

0

AccesRule 클래스를 확장하고 역할에 액세스 할 방법을 구현 ... 문제는 나에게 매우 명확하지 않습니다,하지만 난 당신이 그런 짓을 할 생각

class AccessRule extends \yii\filters\AccessRule { 
protected function matchRole($user) 
    { 
     if (empty($this->roles)) { 
      return true; // no roles defined = access ok 
     } 
     foreach ($this->roles as $role) { 
      // return true if role is allowed based on $user (define your logic) 
     } 
     return false; // no match, ie no access 
    } 
} 

그런 다음 ... AccessControl입니다 당신에게

'access' => [ 
    'class' => \yii\filters\AccessControl::className(), 
    'ruleConfig' => ['class' => '\my\namespace\AccessRule'], 
    'rules' => [ 
     ... 
    ], 
] 

참고이 새 규칙 클래스를 추가 : 코드를 테스트하지 않습니다 .