Код: Выделить всё
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions' => ['login', 'error'],
'allow' => true,
],
[
'actions' => ['logout', 'index'],
'allow' => true,
'roles' => ['@'],
],
[
'actions' => ['test'],
'allow' => true,
'roles' => ['3'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
Теперь так. Если выйти из аккаунта и снова обратится к этому же экшну, то получим белый пустой экран.
Или же так: если поставить вместо тройки в 'roles' какую нибудь несуществующую роль, и попробовать обратиться к экшну, то тоже получим белую пустую страницу.
А причиной, как мне кажется, является метод $this->denyAccess($user), вызываемый в beforeAction в классе AccessControl (строка 133), который в свою очередь вызывает loginRequired(), если пользователь гость, и затем loginRequired пытается выполнить редирект return Yii::$app->getResponse()->redirect($this->loginUrl), который не срабатывает.
И вообще. Этот экшн выполняется и происходит редирект.
Код: Выделить всё
public function actionTest1()
{
return Yii::$app->getResponse()->redirect(Yii::$app->user->loginUrl);
}
Код: Выделить всё
public function actionTest1()
{
$m = Yii::$app->authManager->getRules(); // или другие методы authManager'a или просто authManager
return Yii::$app->getResponse()->redirect(Yii::$app->user->loginUrl);
}