Отключение сессии в Sun one Сервер приложений 7.1 - PullRequest
0 голосов
/ 19 ноября 2011

Я сталкиваюсь с проблемой сеансов, использующих сервлеты и JSP, когда в моем приложении логин / выход из системы отображаются последние имена пользователей.Когда пользователь успешно выполнил вход в приложение, я помещаю информацию о пользователе в сеанс, например

HttpSession ssession=request.getSession(false);
session.setattribute(username,"username");

Когда пользователь нажимает на выход из приложения в приложении.Я написал код

HttpSession ssession=request.getSession(false);

if(session!=null){
   session.invalidate();
}

response.setHeader("Pragma", "cache"); 
response.setHeader("Cache-Control", "private, must-revalidate"); 

Я проверил, доступен ли сеанс или нет, когда пользователь выходит из системы.Сессия недействительна.Но перезапустите один и тот же браузер с другим пользователем.У меня есть пользователь сеанса lastaccess.Я уже установил respone.setheader для страницы входа и загруженной страницы.У меня та же проблема.Эта проблема возникает только на стороне клиента (производственный сервер).Мы используем сервер приложений Sun One 7.1.

1 Ответ

1 голос
/ 19 ноября 2011

Есть 2 проблемы:

  1. Вы устанавливаете неправильные заголовки кэша. Вам необходимо установить следующие заголовки:

    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
    response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
    response.setDateHeader("Expires", 0); // Proxies.
    
  2. Вы устанавливаете заголовки кэша на неправильной странице. Вы должны установить их на всех страницах, требующих входа в систему, а не только на странице, которая появляется после выхода из системы. Вам необходимо создать Filter, который выполняет задание настройки заголовка ответа в методе doFilter(), а затем сопоставить фильтр с шаблоном URL, охватывающим страницы, для которых требуется вход в систему, например /app/*, /secured/* и т. Д.

Смотри также:


Не имеет отношения к конкретной проблеме , не используйте request.getSession(false), вместо этого просто используйте request.getSession() без логического значения.

...