Я пишу применение Чаш Грааля, которое использует безопасность Спринта для идентификации. Я должен показать сообщение пользователю, который автоматически вышелся из-за бездеятельности.
Мое заявление использует и запросы AJAX и прямые запросы диспетчерам. Я заметил, который для безопасности Спринта запросов AJAX возвращает ответ HTTP с кодом 401, и я пересмотрел отображение URL по умолчанию таким способом:
class UrlMappings {
static mappings = {
//...
"401" (controller: 'errors', action: 'inactivityLogout')
}
}
И вот тело inacticityLogout()
метод:
def inactivityLogout() {
log.debug("the user is logged out due to inactivity")
session.setAttribute('inactivityMessage', "You have been logged out due to inactivity.")
render(status: 401)
}
Тогда LoginController
проверяет, установлен ли inactivityMessage
признак и показывает соответствующее сообщение на Странице входа в систему.
Проблема состоит в том, что это решение хорошо работает для требований AJAX, но не работает, когда я пытаюсь провести к другой странице только, нажимая на прямую ссылку в применении. Во втором случае регистрация пуста, таким образом, метод inactivityLogout
не называют.
Поджигатель показывает, что применение возвращает код 302, Перемещенный Временно, таким образом, я, хотя это это - причина. Но тогда я заметил, что тот же самый код возвращен для требований AJAX также. Так, теперь у меня нет идей, что является различием между AJAX и запросами non-AJAX и почему последние не обработаны двигателем отображения URL Чаш Грааля.
Какие-либо идеи, что могло быть неправильным с моим текущим решением? Эта проблема может быть решена совершенно другим способом?
Спасибо!