Редирект на страницу логина в IE

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
Heggi
Сообщения: 8
Зарегистрирован: 2017.05.11, 16:03

Редирект на страницу логина в IE

Сообщение Heggi »

Сломал мозг, гугл не помог. Есть внутренний проект на yii2 (yii2-basic).
В web.php такое в конфигурации:

Код: Выделить всё

'components' => [
   'as beforeRequest' => [
        'class' => 'yii\filters\AccessControl',
        'rules' => [
            [
                'controllers' => ['site'],
                'allow' => true,
            ],
            [
                'allow' => true,
                'roles' => ['@'],
            ],
        ],
    ],
]
Соответственно только контроллер Site доступен всем, а все остальные контроллеры только после авторизации.
Если я в хроме пойду на страницу /controller, то получу ожидаемый редирект на страницу /login (site/login)
А вот если я запущу IE и проделаю тоже самое, то вместо редиректа получу страницу ошибки 403 "Требуется вход"

Из похожего нагуглил только https://stackoverflow.com/questions/429 ... mode-is-on
Но судя по запросам никаких попыток редиректа yii даже не пытается делать, сразу выдает 403

Yii 2.0.12
Heggi
Сообщения: 8
Зарегистрирован: 2017.05.11, 16:03

Re: Редирект на страницу логина в IE

Сообщение Heggi »

Нашел решение.
Связано с тем, что доменной политикой установлен режим совместимости для внутренних сайтов. Из-за этого отличается заголовок Accept.
Добавил в конфиг такое:

Код: Выделить всё

'components' => [
        'user' => [
            .......
            'acceptableRedirectTypes' => [
                'text/html', //по дефолту 
                'application/xhtml+xml', //по-дефолту
                'application/x-ms-application', //добавил для режима совместимости IE
            ],
        ],
],
После чего редирект на страницу логина заработал как положено.
Ответить