Yii2:设置访问控制匹配回调
Yii2 : Setting Access Control matchcallback
我只想知道我是否可以这样做,这样我就不必一遍又一遍地重复相同的代码
[
'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');
}
],
或类似的东西。
谢谢
首先,我不明白您为什么使用&& 而不是||。是打错了吗?
现在回答这个问题,我认为最好在模型中创建一个函数来表示您的身份,如下所示:(我相信您稍后会在其他地方需要它)
public function belongsToGroup()
{
if( $this->team_id == '47'
|| $this->team_id == '62'
...
&& $this->role_id == '1' ){
return true;
} else {
return false;
}
}
然后在授权控件中调用你的函数:
[
'allow' => true,
'actions' => ['index', 'update', 'view', 'logout'],
'roles' => ['@'],
'matchCallback' => function($rule, $action){
return Yii::$app->user->identity->belongsToGroup();
}
],
我只想知道我是否可以这样做,这样我就不必一遍又一遍地重复相同的代码
[
'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');
}
],
或类似的东西。
谢谢
首先,我不明白您为什么使用&& 而不是||。是打错了吗? 现在回答这个问题,我认为最好在模型中创建一个函数来表示您的身份,如下所示:(我相信您稍后会在其他地方需要它)
public function belongsToGroup()
{
if( $this->team_id == '47'
|| $this->team_id == '62'
...
&& $this->role_id == '1' ){
return true;
} else {
return false;
}
}
然后在授权控件中调用你的函数:
[
'allow' => true,
'actions' => ['index', 'update', 'view', 'logout'],
'roles' => ['@'],
'matchCallback' => function($rule, $action){
return Yii::$app->user->identity->belongsToGroup();
}
],