Re[4]: window.onload event
От: Панда Россия  
Дата: 05.11.08 10:18
Оценка:
Здравствуйте, zappy, Вы писали:

П>>Правда, такое решение не очень секьюрно — адрес с id сессии может остаться в выпадающем списке адресной строки браузера.


Z>Да, это точно =)

Z>А можно ли как-нибудь завершить текущую сессию сразу после закрытия, а не ждать таймаута??

Ну разве что как-то очень хитро извратиться. Если очень нужно, то вот, например, какой способ приходит в голову. У каждого окна (в том числе у каждой вкладки) имеется такой аттрибут, как window.name. Он не меняется при перезагрузке содержимого, но потеряется при закрытии вкладки. Поэтому нам надо суметь запихнуть сессию в него.

1. Может быть, придется реализовать некий свой механизм сессий (хотя может и удастся сделать все это на стандартном).
2. id сессии запихиваем в window.name яваскриптом при первой загрузке страницы (при повторной обнаруживаем, что window.name уже установлен и не трогаем его).
3. Часть содержимого страницы, требующую проверку сессии, грузим с помощью AJAX, передавая в запрос id сессии, выколупанный из window.name.

При закрытии вкладки window.name теряется, и сессию обратно не восстановить.

Но я бы не стал все это делать без явной необходимости. Есть много сайтов, где предусмотрено разлогинивание по окончанию работы с сайтом. При этом везде разлогинивание происходит при закрытии браузера, а не вкладки. Вполне стандартная схема, нормально работает и выполняет свою задачу, все к ней привыкли. Я бы не стал от нее отклоняться, если только у сайта действительно нету какой-то важной особенности, требующей другой схемы разлогинивания (но я пока что такую особенность даже гипотетически придумать не могу)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.