как сделать недействительным сеанс в jsf 2.0, если браузер закрыли без аннулирования текущего сеанса.
Вы не можете сделать это программным путем надежным способом,Однако сессия автоматически истекает через 30 минут.Если вы откроете новый браузер, то будет создан новый сеанс, и предыдущий сеанс больше не будет доступен.
и не хотите, чтобы мой пользователь получил оценкуна пользовательские страницы с ограниченным доступом с помощью кнопки назад.
Вы должны указать браузеру , а не кэшировать эти пользовательские страницы с ограничениями.Вы можете сделать это, создав фильтр , который сопоставлен с шаблоном URL, который охватывает эти страницы и выполняет следующую работу в методе doFilter()
:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpServletResponse httpRes = (HttpServletResponse) response;
if (!httpReq.getRequestURI().startsWith(httpReq.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc)
httpRes.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
httpRes.setHeader("Pragma", "no-cache"); // HTTP 1.0.
httpRes.setDateHeader("Expires", 0); // Proxies.
}
chain.doFilter(request, response);
}
Таким образом, браузерпринудительно отправлять полный HTTP-запрос каждый раз вместо отображения страницы из кэша браузера.