Сначала я расскажу вам сравнение с системой безопасности 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разрешить настройку ответа для такого условия?