Как обрабатывать аутентификацию через AJAX с помощью веб-приложения Java, которое использует регистрацию на основе форм - PullRequest
3 голосов
/ 18 сентября 2009

У меня есть Web-приложение Java, работающее в WebSphere 7. Приложение использует метод аутентификации формы, и часть приложения получает доступ к некоторым защищенным ресурсам с помощью запросов AJAX.Однако, когда сеанс пользователя истекает, я получаю страницу входа вместо содержимого, которое должно быть обновлено запросом ajax.

Есть ли хороший способ справиться с этой проблемой?WebSphere возвращает статус ответа 200 со страницей входа в систему, поэтому я не могу на это полагаться.

Может быть, есть способ сообщить серверу, что базовая аутентификация должна использоваться в определенных обстоятельствах, но я не знаю как.

Я также подумал о том, чтобы сначала проверить, является ли сеанс новым, сначала сделав запрос на незащищенные ресурсы, а затем вернуть определенный статус, но это похоже на решение с запахом кода ...

Ответы [ 2 ]

1 голос
/ 18 сентября 2009

Вот как я справился с этим в аналогичной ситуации. В нашем случае ответом AJAX всегда является JSON. Когда срок входа в систему истекает, фильтр аутентификации всегда отправляет форму входа в HTML. Поэтому я проверяю тип контента следующим образом:

 if ((this.getHeader('Content-type') || '').include('application/json'))

Если это не JSON, я просто перенаправляю на другую защищенную страницу, которая вызывает полноэкранный вход в систему, а затем эта страница перенаправляет пользователя на страницу AJAX.

0 голосов
/ 18 сентября 2009

Вы можете отправить некоторый уникальный ответ или код ошибки (убедитесь, что вы не получите этот код ошибки в качестве действительного ответа в любом случае), когда сеанс пользователя отсутствует для вызова Ajax из WebSphere. А в методе вызова Ajax, при ответе процесса, проверьте, является ли его код ошибки. Если код ошибки, перенаправьте его на страницу входа или сделайте все, что в других случаях будет действительными данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...