2012-04-03 4 views
2

Как аннулировать сеанс, когда я нажимаю новое окно вкладок для того же приложения (для того же URL-адреса)? Как только я получаю доступ к тому же URL-адресу, существующая сессия открылась. Я хочу начать разный сеанс дляНедействительный сеанс Java для новой вкладки

+0

Недействительны только для новой вкладки ?. Что, если я вернусь к предыдущей открытой вкладке? Должна ли сессия существовать? –

ответ

-1

Идентификатор сеанса хранится в файле cookie, поэтому вы не можете иметь два разных сеанса для одного и того же приложения в одном браузере (новая вкладка или новое окно - не имеет значения) одновременно ,

0

Если вы используете простой сервлет вы можете использовать следующий код,

// Get the existing session. 
HttpSession session = request.getSession(false); 

    // Invalidate the existing session. 
if(session!=null) { 
    session.invalidate(); 
} 

Вы можете вызвать этот сервлет делает отображение для вашей новой вкладке URL в web.xml.

-1

Ваш сеанс сервера сопоставляется с сеансом HTTP. Вы не можете одновременно иметь два сеанса HTTP в одном браузере ... И как бы вы определили, что нажал кнопку «Открыть в новой вкладке», и он не открыл ссылку на той же вкладке? У вас должен быть AJAX ping для этого (довольно сложно ...)

2

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

Но некоторые структуры имеют эту концепцию Window, так что с ее помощью вы можете получать уведомление при открытии нового окна/вкладки. Как только вы сможете его обнаружить, вы можете уничтожить старые окна. Обновление сеанса (или аннулирование и создание нового) не будет иметь желаемого эффекта (даже если вы можете это сделать) на другой вкладке, поскольку все это может повториться, когда пользователь перейдет на другую старую вкладку.

Лучше всего сохранить несколько окон для пользователя за один сеанс.

0

Использовать Url-переписывание для разных сеансов в разных вкладках/окнах. Если вы хотите аннулировать сеанс, просто удалите все предыдущие сеансы для этого пользователя. Единственная проблема заключалась бы в том, что кто-то скопировал и вставил URL-адрес. Если это может быть проблемой, попробуйте каким-то образом сохранить ключ сеанса в хранилище HTML5.

Смежные вопросы