@goaf

Yii2. Как правильно сделать редирект на авторизацию?

Здравствуйте!
Столкнулся с очень неприятной проблемой, все найденные решения не помогли.
Создал проект на основе yii2-advanced (работаю пока в backend), добавил пару модулей (включая пользователей).
При заходе не авторизованного пользователя на страницу модуля, то его перенаправляет на страницу с авторизацией. Все работает нормально, кроме случая, когда заходим на страницу вида: project.dev/random_string. В этом случае показывается страница с ошибкой 404 и со всеми данными доступными авторизованным пользователям.
Т.е. при корректной работе должно сначала перекинуть на страницу с авторизацией, а после на выбранную страницу с ошибкой.
Я понимаю, что проблема где-то в конфигах. Т.е. access control для site и модулей работает как указано, но если обращаться к несуществующему модулю, то возникает эта проблема.

Код из backend\SiteController
public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'actions' => ['login', 'error'],
                        'allow' => true,
                    ],
                    [
                        'actions' => ['logout', 'index'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],
        ];
    }


Часть конфига из backend\main.php
'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'login' => 'site/login',
                '' => 'site/index'
            ],
        ],


Заранее спасибо.
  • Вопрос задан
  • 1053 просмотра
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
В этом случае показывается страница с ошибкой 404 и со всеми данными доступными авторизованным пользователям.

Ну так смените layout для страницы с ошибками, что бы там лишнего не было. Делать страницу с ошибкой доступной только зарегистрированному пользователю - это очень большая ошибка. В том числе из-за возможности поймать циклическую пере адресацию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы