Yii2:设置访问控制匹配回调

时间:2018-07-31 07:04:06

标签: yii2 yii2-basic-app

我只想知道是否可以这样做,所以我不必一遍又一遍地重复相同的代码

[
  'allow' => true,
  'actions' => ['index', 'update', 'view', 'logout'],
  'roles' => ['@'],
  'matchCallback' => function(){
                        return (Yii::$app->user->identity->team_id == '47' && Yii::$app->user->identity->team_id == '62'
                        && Yii::$app->user->identity->team_id == '63' && Yii::$app->user->identity->team_id == '64'
                        && Yii::$app->user->identity->team_id == '65' && Yii::$app->user->identity->team_id == '66' && Yii::$app->user->identity->role_id == '1');
                    }
                ],

或类似的东西。

谢谢

1 个答案:

答案 0 :(得分:1)

首先,我不明白您为什么使用&&而不是||。是错字吗? 现在,为了回答这个问题,我认为最好在模型中为此目的创建一个函数,以表示您的身份,如下所示:(我确信您稍后会在其他地方使用它)

Shiny

然后在授权控件中调用您的函数:

public function belongsToGroup()
{
    if( $this->team_id == '47' 
        || $this->team_id == '62' 
        ... 
        && $this->role_id == '1' ){
        return true;
    } else {
        return false;
    }

}