拒绝访问控制器后如何在 Yii2 中设置 flash 消息
How to set flash message in Yii2 after denied access to controller
控制器访问被拒绝后如何在Yii2中设置闪现信息?
下面是如何拒绝访问 http://www.yiiframework.com/doc-2.0/yii-filters-accesscontrol.html :
public function behaviors()
{
return [
'access' => [
'class' => \yii\filters\AccessControl::className(),
'only' => ['create', 'update'],
'rules' => [
// deny all POST requests
[
'allow' => false,
'verbs' => ['POST']
],
// allow authenticated users
[
'allow' => true,
'roles' => ['@'],
],
// everything else is denied
],
],
];
}
在此之后它重定向到 site/login。我怎样才能像 "This section is only for registered users"?
您可以尝试添加拒绝回调吗?我希望这有效:
public function behaviors()
{
return [
'access' => [
'class' => \yii\filters\AccessControl::className(),
'only' => ['create', 'update'],
'rules' => [
// deny all POST requests
[
'allow' => false,
'verbs' => ['POST']
],
// allow authenticated users
[
'allow' => true,
'roles' => ['@'],
],
// everything else is denied
],
'denyCallback' => function ($rule, $action) {
Yii::$app->session->setFlash('error', 'This section is only for registered users.');
Yii::$app->user->loginRequired();
},
],
];
}
您还可以将 denyCallback 添加到每个规则中:
[
'allow' => false,
'roles' => ['@'],
'denyCallback' => function($rule, $action) {
// callback logic
}
]
控制器访问被拒绝后如何在Yii2中设置闪现信息? 下面是如何拒绝访问 http://www.yiiframework.com/doc-2.0/yii-filters-accesscontrol.html :
public function behaviors()
{
return [
'access' => [
'class' => \yii\filters\AccessControl::className(),
'only' => ['create', 'update'],
'rules' => [
// deny all POST requests
[
'allow' => false,
'verbs' => ['POST']
],
// allow authenticated users
[
'allow' => true,
'roles' => ['@'],
],
// everything else is denied
],
],
];
}
在此之后它重定向到 site/login。我怎样才能像 "This section is only for registered users"?
您可以尝试添加拒绝回调吗?我希望这有效:
public function behaviors()
{
return [
'access' => [
'class' => \yii\filters\AccessControl::className(),
'only' => ['create', 'update'],
'rules' => [
// deny all POST requests
[
'allow' => false,
'verbs' => ['POST']
],
// allow authenticated users
[
'allow' => true,
'roles' => ['@'],
],
// everything else is denied
],
'denyCallback' => function ($rule, $action) {
Yii::$app->session->setFlash('error', 'This section is only for registered users.');
Yii::$app->user->loginRequired();
},
],
];
}
您还可以将 denyCallback 添加到每个规则中:
[
'allow' => false,
'roles' => ['@'],
'denyCallback' => function($rule, $action) {
// callback logic
}
]