这是我在ShippingController中的行为函数:
public function behaviors()
{
return [
'access' => [
'class' => \yii\filters\AccessControl::className(),
'rules' => [
// deny all POST requests
// [
// 'actions' => ['index', 'create'],
// 'allow' => TRUE,
// ],
[
'actions' => ['index', 'create', 'init'],
'allow' => true,
'roles' => ['user2','user3'],
'denyCallback' => function()
{
redirect to address/index if user 2 cant access redirect to address/create if user3 cant access
//redirect here
}
],
// everything else is denied
],
],
];
}
如何处理这个问题!
如果角色:address/index
无法访问,我希望重定向页面为user2
如果角色:address/create
无法访问
user3
答案 0 :(得分:2)
我假设你在yii中使用RBAC系统。 检查以下配置文件:
'authManager' => [
'class' => 'yii\rbac\DbManager',
],
或' yii \ rbac \ PhpManager'。
这对我有用:
'actions' => ['index', 'create', 'init'],
'allow' => false,
'roles' => ['user2','user3'],
'denyCallback' => function()
{
$user = Yii::$app->user;
if ($user->can('user2')) {
return Yii::$app->getResponse()->redirect(['/address/index']);
} else {
return Yii::$app->getResponse()->redirect(['/address/create']);
}
}
'允许'应该将规则的选项设置为false,以便调用denyCallback。 您可以在" yiisoft / yii2 / filters / AccessControl.php"第120行。