Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > запрет браузеру загружать страницы после logout


Автор: Pawl 3.3.2012, 14:31
Доброго времени суток!
В моем приложении сперва загружается страничка авторизации. Если я авторизируюсь успешно, загружается страница, в которой можно изменять какие-то данные и пр. На ней есть кнопочка logout, при нажатии на которую я возвращаюсь к авторизации. И если затем я нажму в браузере "назад", я опять попадаю на страницу для изменения данных. А я бы хотел запретить такой переход! Не подскажете, как это сделать, используя jsp (и Struts)?
Спасибо!
З.Ы. пробовал в начале метода execute в Action'e написать такой код:
Код

response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache,no-store,max-age=0");
response.setDateHeader("Expires", 1);
 - не помогло!:(

Автор: Molodec 3.3.2012, 14:47
Цитата(Pawl @  3.3.2012,  14:31 Найти цитируемый пост)
На ней есть кнопочка logout, при нажатии на которую я возвращаюсь к авторизации. 

Как именно возвращаетесь? Просто переадресуетесь? 
Если да - то конечно же вы можете попасть на нее обратно. 
Для того чтобы удалить сессию используйте:
request.getSession.invalidate();
Если на той странице требуется чтобы были определенные права или пользователь был не null. 
То теперь она будет недоступна. 
Если Вы имеете ввиду кэш... 
То зачастую страница перезагружается при возврате назад... 

Автор: Pawl 3.3.2012, 16:21
Цитата(Molodec @  3.3.2012,  14:47 Найти цитируемый пост)
Как именно возвращаетесь? Просто переадресуетесь? Если да - то конечно же вы можете попасть на нее обратно. 

Нет, не просто переадресуюсь. После логаута пока я не введу опять пароль, ничего не загрузится.
А вот если нажму кнопочку "назад" на панели инструментов браузера, переход на ранее загруженную страницу осуществляется без проблем.
Приведу пример: на mail.ru после логаута обратно в свой ящик уже не попадешь. А если в браузере  нажмешь "назад", выскочит сообщение, что-то типа "загрузка без повторной отправки данных невозможна". Вот и я хотел бы в своем приложении сделать также.

Автор: Molodec 3.3.2012, 17:05
Пробовал хранить страничку в WEB-INF(то есть чтобы не было доступа к ней) и выдавать ее с помощью струтовского форварда в экшене? Может тогда отправка и будет обязательной... Я так думаю. 

Автор: Pawl 3.3.2012, 17:25
Цитата(Molodec @  3.3.2012,  17:05 Найти цитируемый пост)
Пробовал хранить страничку в WEB-INF(то есть чтобы не было доступа к ней)

Не пробовал. Точнее, не знаю как. Можно примерчик? smile 
Спасибо!

Добавлено через 6 минут и 51 секунду
Сейчас страничка описана у меня в web.xml так:
Код

    <welcome-file-list>
        <welcome-file>/login.jsp</welcome-file>
    </welcome-file-list>

и выдается она у меня именно через action, путь login.do

Автор: Pawl 4.3.2012, 14:12
Решения не нашел:( Пока тему закрываю.

Автор: Stolzen 5.3.2012, 09:54
Если на уровне своего велосипеда. При логине сохранять principal пользователя в сессию, а по запросу страницы с ограниченным доступом проверять, есть ли в сессии этот principal (т.е., что пользователь авторизован). И если нет, то выводить окно логина. По logout удалять этот объект из сессии.

В Spring Security это уже реализовано, правда не уверен, что его можно подцепить к Struts

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)