У меня есть около 30 страниц jsp с входом и выходом из системы. Я поместил все страницы в сеанс, так что доступ может иметь только действительный пользователь. Теперь проблема в том, что всякий раз, когда пользователь выходит из системы, сеанс становится недействительным, но если пользователь нажимает кнопку «Назад» в браузере, он все равно отображает защищенные страницы (которые не должны отображаться).

Я узнал, что проблема была с браузером, который хранит кеш и историю. Поэтому я применил response.setheader("cache-control",.....) и т. д. на защищенных страницах, а также window.history.go(+1) в теле защищенных страниц.

В какой-то степени он работает нормально, но время от времени отображает защищенные страницы. А также после того, как пользователь войдет в сессию, и когда он будет внутри веб-сайта, кнопка «Назад» должна работать для него без каких-либо хлопот (без запроса пользователя на повторную отправку данных формы). Как только он выйдет из системы, сеанс должен завершиться, и он больше не сможет получить доступ к страницам, нажав кнопку «Назад». Есть ли способ добиться этого?

1
Mahesh 7 Апр 2011 в 10:31
1
Сделать что-то безопасным — это не то же самое, что сделать его невидимым
 – 
Luka Rahne
7 Апр 2011 в 10:34
@ralu, +1. @Mahesh, вы путаете безопасность (то есть все, что связано с сеансами) с тем, может ли пользователь «видеть» прошлую страницу. Это не имеет ничего общего с кэшированием, которое действительно контролирует, может ли браузер вообще избежать посещения вашего сайта и просто предоставить вашему пользователю «последнюю» страницу, которую он увидит. Все это не имеет никакого отношения к тому, сможет ли пользователь сделать что-нибудь полезное с вашим сайтом после выхода из системы.
 – 
Stephen Chung
7 Апр 2011 в 10:42

1 ответ

1 Для проверки подлинности пользователя не используйте код на jsp. У нас есть Filter только для этого используйте его.

2 Сделайте свой Filter сделать следующее, чтобы решить проблему кэширования

HttpServletResponse hsr = (HttpServletResponse) response;
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0.
hsr.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(request, response);

3 Удалить JavaScript

5
jmj 7 Апр 2011 в 10:36
@Jigar: в моем случае это не работает. Не могли бы вы немного расширить, ' stackoverflow.com/questions/32561045/…'
 – 
Farhan Shirgill Ansari
14 Сен 2015 в 14:19