У меня есть приложение, защищенное с помощью devise, и время ожидания сеанса 30 минут.С devise все работает нормально для нормальной навигации, если пользователь нажимает на ссылку по истечении времени ожидания, он перенаправляется обратно на экран входа в систему с сообщением «Ваш сеанс истек, пожалуйста, войдите снова, чтобы продолжить.», Отлично.
Однако у меня есть AJAX во многих местах.Если время сеанса истекло, и пользователь выполняет операцию AJAX, мне нужно то же поведение, что и выше, а не молчаливое завершение работы с ошибкой 401 в фоновом режиме.
Пока у меня есть этот код jquery на каждой странице, чтобы перехватить 401и перезагрузите:
$(document).ajaxError(function(e, error) {
switch(error.status) {
case 401: {
// unauthorised (possible timeout)
location.reload();
break;
}
Это работает достаточно хорошо, но есть досадная проблема:
Поскольку запрос ajax сначала разрабатывается, когда мое приложение перезагружает страницу, я получаю направленную на вход в системуна странице, но я не вижу сообщения об истечении времени ожидания, я вижу не прошедшее проверку подлинности «Вам необходимо войти или зарегистрироваться перед тем, как продолжить».сообщение.
Есть ли способ убедиться, что во втором запросе устройство все еще показывает сообщение о превышении времени ожидания?