2016-05-12 125 views
0

我想限制角色成员的用户访问后端。 我使用的是默认的yii2先进的授权RBAC,但在访问规则的规则,我不能添加任何角色:如何禁止用户访问yii2中后端的角色成员?

rules => [ 
    [      
     'actions' => ['login', 'error'], 
     'allow' => TRUE,            
    ] 
在后端的siteController

。如果有什么办法可以做到这一点,我会很感激。

回答

0

如果你只想要拒绝访问成员,并允许your_role可以

public function behaviors() 
{ 
    return [ 
     'access' => [ 
      'class' => AccessControl::className(), 
      'rules' => [ 
       [ 
        'allow' => false, 
        'roles' => ['member'] 
       ], 
       [ 

        'allow' => true, 
        'roles' => ['your_role'], 
       ], 
      ], 
     ], 
     'verbs' => [ 
      'class' => VerbFilter::className(), 
      'actions' => [ 
       'logout' => ['post'], 
      ], 
     ], 
    ]; 
} 
0

这是没有必要每个后端控制器的行为进行编码。您可以相同的代码添加到$配置的结束[ '组件']数组后端/配置/ main.php:

'as beforeRequest' => [ 
    'class' => \yii\filters\AccessControl::className(), 
    'rules' => [ 
     [      
      'actions' => ['login', 'error'], 
      'allow' => true,            
     ], 
     [ 
      'allow' => false, 
      'roles' => ['member'], 
     ], 
    ], 
    'denyCallback' => function() { 
     return Yii::$app->response->redirect(['frontend']); 
    }, 
], 
0

试试这个,

public function behaviors() 
{ 
    return [ 
     'verbs' => [ 
      'class' => VerbFilter::className(), 
      'actions' => [ 
       'delete' => ['post'], 
      ], 
     ], 
     'access' => [ 
      'class' => AccessControl::className(), 
      // We will override the default rule config with the new AccessRule class 
      'ruleConfig' => [ 
       'class' => AccessRule::className(), 
      ], 
      'only' => ['index','create', 'update', 'delete'], 
      'rules' => [ 
       [ 
        'actions' => ['index','create'], 
        'allow' => true, 
        // Allow users, moderators and admins to create 
        'roles' => [ 
         User::ROLE_USER, 
         User::ROLE_MODERATOR, 
         User::ROLE_ADMIN 
        ], 
       ], 
       [ 
        'actions' => ['update'], 
        'allow' => true, 
        // Allow moderators and admins to update 
        'roles' => [ 
         User::ROLE_MODERATOR, 
         User::ROLE_ADMIN 
        ], 
       ], 
       [ 
        'actions' => ['delete'], 
        'allow' => true, 
        // Allow admins to delete 
        'roles' => [ 
         User::ROLE_ADMIN 
        ], 
       ], 
      ], 
     ], 
    ]; 
} 
相关问题