Как обнаружить перенаправление FOSUserBundle на страницу входа - PullRequest
0 голосов
/ 22 сентября 2018

Сначала я расскажу вам сравнение с системой безопасности ASP.NET.

Когда я разрабатываю использование MVC в ASP.NET, я использую систему безопасности, которую он обеспечивает.Когда сеанс истекает, и фреймворк перенаправляет на страницу входа в систему, перед перенаправлением он отправляет запрещенную ошибку (401), которая инкапсулирована в объект XHR.Затем я использую следующий метод Javascript, чтобы проверить его и показать сообщение пользователю, а затем перезагрузить страницу, чтобы инфраструктура автоматически перенаправила на страницу входа:

function checkUserSession(xhr) {
    // Si es 401, es porque se debe redireccionar al login
    //alert(JSON.stringify(xhr));
    if (xhr.getResponseHeader("X-Responded-JSON") != null
            && JSON.parse(xhr.getResponseHeader("X-Responded-JSON")).status == "401")
    {
        BootstrapDialog.alert({
            type: BootstrapDialog.TYPE_WARNING,
            title: 'Sesión Expirada',
            message: 'La sesión de usuario caducó.<br /><br />Presione Aceptar para autenticarse y posteriormente vuelva a realizar la acción.',
            callback: function (result) {
                location.reload();
            }
        });
    }
}

Я выполняю эту проверку при вызоведействие с использованием Ajax.Например, действие, которое вызывается для заполнения сетки.Если я не выполняю эту проверку, страница входа в систему вызывается внутренне, поэтому сетка ничего не делает, и пользователь никогда не получает информацию о истечении сеанса.

Хорошо ... Я пытался сделать то же самое в Symfony 4,используя FOSUserBundle.Но когда я вызываю действие с помощью Ajax, и сеанс истек.Framework просто перенаправляет на страницу входа, вызывая ответ типа 302, который на самом деле не является ошибкой, поэтому я не знаю, как его перехватить.

Что вы думаете об этом?Мне нужно обнаружить это состояние в datatable, а также при загрузке модального диалогового окна начальной загрузки, поскольку я загружаю содержимое с помощью ajax.

В случае datatable существует событие, которое генерируется при возврате данных изajax ... но я не могу использовать это, потому что событие вызывается, когда перенаправление на страницу входа в систему действительно было выполнено .... поэтому я не знаю, как обнаружить запрещенное условие или условие перенаправления.

Имеет ли FOSUserBundleразрешить настройку ответа для такого условия?

...