Я работаю на веб-портале портала веб-портала. Допустим, что портал находится на a.whereiwork.com и имеет много портлетов wsrp, а также несколько портлетов iframed, которые указывают на страницы в другом субдомене, b.whereiwork.com (унаследованное приложение, которому также принадлежит кодовая база). У нас есть текущая проблема, когда пользователи выходят из портала, но когда они заходят в свою сессию на b.whereiwork.com, сохраняются, и у нас есть некоторые проблемы с получением идентификатора JSESSION, очищенного от этого поддомена.как аннулировать сеанс пользователя
Это серьезная проблема с безопасностью, так как следующим пользователем для входа на этот компьютер может быть не один и тот же пользователь (например, кто-то регистрируется, а его жена регистрируется и видит данные со своей сессии).
Одна вещь, которую мы решили попробовать, - добавить iframe к поддомену на странице выхода, что делает недействительным сеанс на подобласте. Безопасность немного отличается от другого субдомена, и это сложнее, чем я могу действительно заняться здесь. Поверьте мне на слово - это не сработает.
Лучшая идея, которую мы имеем сейчас, это добавить фильтр сервлетов верхнего уровня на b.whereiwork.com, который проверяет, изменился ли файл cookie безопасности, а затем вызывает session.invalidate(). Таким образом, если пользователь выйдет из системы, мы можем оставить их сессию как есть, если они не попытаются войти в систему. Мы можем обнаружить, что это другой логин, потому что логин отслеживается в отдельном файле cookie.
Так что мой вопрос. Есть ли проблема с вызовом session.invalidate() в фильтрах верхнего уровня. Предположим, что другим фильтрам в цепочке фильтров необходимо будет создавать объекты в сеансе. Предполагаю ли я после вызова invalidate в сеансе, что страница вернет другой JSESSIONID?
Любые другие предложения, которые могут быть более чистыми, будут оценены по достоинству.
Как бы вы справились с такими проблемами, как тайм-аут сеанса в основном домене или перезапуск основного сервера домена. –