Проблема с сессией в приложении на базе Struts - PullRequest
0 голосов
/ 15 января 2011

Я делаю многопользовательское приложение для входа в систему, где я использую сеанс для хранения объекта пользователя.

  HttpSession session = request.getSession(true);
  session.setAttribute("user",user);

На каждой странице я проверяю, используя JSTL, присутствует ли пользовательский объект в сеансе.

<c:choose>
   <c:when test="${not empty sessionScope.user}"> 
    //jsp code
    </c:when>
   <c:otherwise> 
    <logic:redirect forward="welcome"/>
  </c:otherwise>
</c:choose>

Моя проблема в том, что если пользователь нажимает на ссылку href в приложении, он заменяется на Предыдущий пользователь в сеансе. то есть он загружает пользователя из кеша. Если я обновлю страницу, она загрузит правильного пользователя.

Как я мог это исправить?

1 Ответ

0 голосов
/ 15 января 2011

Прежде всего, сессия хранится на сервере и не имеет ничего общего с клиентским кешем.

Предыдущий пользователь не загружается из кеша (как вы говорите), страница загружается из кеша, поскольку ссылки идут на сервер по GET. Браузер может кэшировать результат GET, если URL не изменился с момента последнего запроса.

Чтобы это исправить, вам нужно аннулировать клиентский кеш. Это можно сделать, добавив директивы заголовка кэша HTTP или , добавив метатеги на страницу .

Я бы предложил использовать заголовки HTTP, поскольку прокси-серверы обычно не читают содержимое страницы, и вы можете получить кеш на прокси-сервере, даже если клиент не хранит страницу в кеше клиента.

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