Я, вероятно, не собираюсь получать всю необходимую информацию, чтобы помочь с первым ударом, но я сделаю все возможное, чтобы отредактировать это по ходу дела.
У меня есть Grails1.3.7 приложение, использующее плагин Spring-Security-Core.Я работаю над кодом, который имеет дело с тайм-аутом сеанса и запросами ajax.В LoginController у меня есть следующее:
def authAjax = {
session.SPRING_SECURITY_SAVED_REQUEST_KEY = null
response.sendError HttpServletResponse.SC_UNAUTHORIZED
}
В глобальном файле JavaScript у меня есть следующее:
$.ajaxSetup({
error: function(xhr, status, err) {
if (xhr.status == 401) {
$('#login-dialog').dialog({ // show ajax login });
}
}
});
Когда я запускаю это локально, все работает как положено.Когда у меня истекает время сеанса, я вижу 401 в консоли FireBug и получаю диалог входа в систему.Когда я развертываю это на нашем промежуточном сервере, я получаю только 302 и никогда не получаю в authAjax, поэтому никогда не получаю 401.
Основное различие между локальным dev и staging в том, что я использую mod_proxy с apachehttpd для передачи запросов туда и обратно в Tomcat.Я предполагаю, что именно поэтому я получаю 302, а не 401, но я не уверен на 100%.
Мой вопрос (ы)
- Является ли mod_proxy причиной302
- Как мне решить эту проблему, чтобы она работала так же, как и локально, но все еще используя mod_proxy.
ОБНОВЛЕНИЕ:
Впоследние комментарии, локально, когда я получаю 401, я вижу это:
POST https://localhost:8080/admin/bookProject/edit 302 Moved Temporarily
GET http://localhost:8080/login/authAjax 401 Unauthorized
И я вижу отладку из метода authAjax
На промежуточном сервере я получаю:
POST https://server.com/admin/bookProject/edit 302 Moved Temporarily
А я не вижу отладку из authAjax, так что я даже не добираюсь туда.