powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Грамотное решение
25 сообщений из 25, страница 1 из 1
Грамотное решение
    #38297514
Фотография alex.potekhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читал форум, подобных тем хватает, но грамотного решения я не нашел.

Попробую описать детально.
Задача: Сделать так чтоб сайт ASP.NET обрывал сессию как только человек закрыл браузер (так как я юзаю переменные сессия к примеру
Код: c#
1.
Session["UserVasiliyIsLogedIn"] = true;

И если он закроет браузер и пойдет к другому компу то там его не пустит на сайт!). Надеюсь нормально описал?
Реализовано сейчас: Я поставил тайм-аут сессии 1 мин. и положил таймер который раз в 30 сек. делает пост запрос (чтоб если человек отошел от компа и ничего не делает сессия не прервалась).

Все работает, проблем нет. Но! Как по мне задача реализована не "по феншую", а топорным методом. (Можно ж не постить каждые 30 сек. ?)
Может кто сталкивался? Какой самый просто способ рвать сессии после закрытия браузера? Или вообще что можно сделать в данной ситуации?
...
Рейтинг: 0 / 0
Грамотное решение
    #38297525
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex.potekhin,

Сессия и так рвётся после закрытия брвузера. Именно браузера , а не страницы в закладке.
...
Рейтинг: 0 / 0
Грамотное решение
    #38297527
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оффalex.potekhinИ если он закроет браузер и пойдет к другому компу то там его не пустит на сайт!
хоел бы я посмотреть в глаза аналитика, придумавшего такое требование
...
Рейтинг: 0 / 0
Грамотное решение
    #38297528
Фотография alex.potekhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergealex.potekhin,

Сессия и так рвётся после закрытия брвузера. Именно браузера , а не страницы в закладке.
Сорри. Я имел ввиду закладку.
...
Рейтинг: 0 / 0
Грамотное решение
    #38297530
Фотография alex.potekhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель
оффalex.potekhinИ если он закроет браузер и пойдет к другому компу то там его не пустит на сайт!
хоел бы я посмотреть в глаза аналитика, придумавшего такое требование

Ну идея как прикладной программы. Если ничего не делаешь, она работает. Если закрыл, то нет хвостов. По типу ISQ. Зайти можно только с 1 компа.
...
Рейтинг: 0 / 0
Грамотное решение
    #38297539
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex.potekhin Задача: Сделать так чтоб сайт ASP.NET обрывал сессию как только человек закрыл браузер
Бред. Дальше даже читать не стал.
...
Рейтинг: 0 / 0
Грамотное решение
    #38297546
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeСессия и так рвётся после закрытия брвузера. Именно браузера , а не страницы в закладке.
С чего это?

http://msdn.microsoft.com/ru-ru/library/ms178581(v=vs.90).aspx Сеанс считается активным, пока запросы выполняются с одинаковым значением идентификатора SessionID. Если время между запросами определенного сеанса превышает указанное время ожидания в минутах, сеанс считается недействительным. Запросы, выполненные с просроченным идентификатором SessionID, приводят к запуску нового сеанса.
...
Рейтинг: 0 / 0
Грамотное решение
    #38297552
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУShSergeСессия и так рвётся после закрытия брвузера. Именно браузера , а не страницы в закладке.
С чего это?

http://msdn.microsoft.com/ru-ru/library/ms178581(v=vs.90).aspx Сеанс считается активным, пока запросы выполняются с одинаковым значением идентификатора SessionID. Если время между запросами определенного сеанса превышает указанное время ожидания в минутах, сеанс считается недействительным. Запросы, выполненные с просроченным идентификатором SessionID, приводят к запуску нового сеанса.
По определению. Читай мануалы, ёксель-моксель.
Сессионная кука (айди сессии) убивается по закрытию браузера. Это - букварь для детского сада.
...
Рейтинг: 0 / 0
Грамотное решение
    #38297590
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeПо определению. Читай мануалы, ёксель-моксель.
Сессионная кука (айди сессии) убивается по закрытию браузера. Это - букварь для детского сада.
Дорогой мой, убить кукис и прибить сессию на сервере - это разные вещи. Во-вторых, айди сесии может быть протаскиваться и в url. Каким образом сервер узнает, что клиент "закрыл браузер", чтобы прибить сессию? :)
...
Рейтинг: 0 / 0
Грамотное решение
    #38297592
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeСессионная кука (айди сессии) убивается по закрытию браузера. Это - букварь для детского сада.
И всё-таки, т.к. это букварь для детского сада: может поделиться пруфом на то, что браузер "убивает сессионную куку"?
У меня несколько вопросов: как он определяет, что она именно "сессионная". И почему он решает, что ее нужно убить?
...
Рейтинг: 0 / 0
Грамотное решение
    #38297598
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос снят.

http://en.wikipedia.org/wiki/HTTP_cookie#Session_cookie Web browsers normally delete session cookies when the user closes the
...
Рейтинг: 0 / 0
Грамотное решение
    #38297605
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серж, это второй вопрос снят.

МСУВопрос снят.

А первый еще в силе: 14432842

С какого перепуга сессия рвется на сервере после закрытия браузера?
...
Рейтинг: 0 / 0
Грамотное решение
    #38297621
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

На сервере она не рвётся , а становится недоступной для браузера, компри?
Для пользователя - можешь называть "рвётся", ему один хрен.
...
Рейтинг: 0 / 0
Грамотное решение
    #38297624
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПС. Ну, а если в браузере запрещены кукисы, то тогда сессионная кука передаётся в строке запроса. В принципе, да, если на сервере сессия ещё не сдохла, то можно запустить браузер с такой строкой запроса.
...
Рейтинг: 0 / 0
Грамотное решение
    #38297652
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeМСУ, На сервере она не рвётся , а становится недоступной для браузера, компри?
Для пользователя - можешь называть "рвётся", ему один хрен.
Ок, если ты в таком контексте имел ввиду, то ответ засчитывается.

ShSergeПС. Ну, а если в браузере запрещены кукисы, то тогда сессионная кука передаётся в строке запроса. В принципе, да, если на сервере сессия ещё не сдохла, то можно запустить браузер с такой строкой запроса.
О чем и речь. На сервере сессия живет, пока время не истечет либо принудительно ее пользователь не абандонит.
...
Рейтинг: 0 / 0
Грамотное решение
    #38298527
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лонгпулинг, вебсокеты, и хак-методы, типа бесконечного джипега — всё для поддержания жизни сессии, эт можна :)
...
Рейтинг: 0 / 0
Грамотное решение
    #38299410
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttлонгпулинг, вебсокеты, и хак-методы, типа бесконечного джипега — всё для поддержания жизни сессии, эт можна :)
Это всё самое плохое, что можно себе вообразить для продления сессии. Обычно, используют простой поллинг, т.е., раз в 15 минут с клиента (браузер) запускается с помощью какого-нибудь аякса хендлер, который выводит два байта - "ОК", если всё хорошо. И сессия - таки жива. Но если закрыть браузер (о чём и речь), то это делу не поможет.

На вопрос топикстартера, как при закрытии закладки грохнуть сессию (вернее, доступ к ней) - прописать сессионной куке яваскриптом, на унлоад боди, экспирес вчерашним днём (у сессионных кук экспирес отсутствует, поэтому они и грохаются при закрытии браузера). Но это - нехорошо, потому что, если ещё есть закладка, или страница в этом же самом браузере (нужная), то она тоже окажется без сессионной куки. Поэтому надо дело решать маленько думая.
...
Рейтинг: 0 / 0
Грамотное решение
    #38299425
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сама задача от луквого. Зачем лезть в эти механизмы своими кривыми руками и писать левые хаки?
...
Рейтинг: 0 / 0
Грамотное решение
    #38299471
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,

авторЗадача: Сделать так чтоб сайт ASP.NET обрывал сессию как только человек закрыл браузер (так как я юзаю переменные сессия к примеру

WebSockets — идеальное решение. но! 1. не каждый сервер это может себе позволить. 2. только современные браузеры.

через SignalR можно поддерживать соединение, либа сама выберет подходящий по возможностям вариант. как только пользователь закрывает браузер (или последнюю открытую вкладку на сайт), мы узнаем об этом сразу же, моментально можно сказать, а не через какие-то там 15 минут.

авторИ если он закроет браузер и пойдет к другому компу то там его не пустит на сайт!).

чтобы решить эту задачу, объект Session нам вообще не понадобится. вообще плевать, есть там сессии или нет. другое дело, если в этих сессиях хранить открытые дескрипторы или что-то вроде того, т.е. неразделяемые ресурсы. это плохая архитектура однозначно.

авторМожно ж не постить каждые 30 сек.?

можно поддерживать соединение. если постить каждый 30 сек, надо пол минуты ждать, прежде чем зайти с другого компа. решение так себе.

ShSerge прописать сессионной куке яваскриптом, на унлоад боди, экспирес вчерашним днём

вот этого делать не нужно. сессионная кука итак сама по себе умирает при закрытии браузера. а вот послать месседж на сервер можно, но как я говорил, гарантий что это случится нет. браузер можно просто выгрузить из памяти или нажать кнопку реЗет.
...
Рейтинг: 0 / 0
Грамотное решение
    #38299559
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt...WebSockets — идеальное решение...
Оно - не решение. Сессия, один хрен, разорвётся, ртфм.
hVostt...сессионная кука итак сама по себе умирает при закрытии браузера...
При закрытии страницы в браузере, если браузер не закрыт, или ещё один экземпляр этого браузера запущен, не умирает.
...
Рейтинг: 0 / 0
Грамотное решение
    #38299587
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,

так речь шла о закрытии браузера, а не вкладок. условия уже изменились? :)
...
Рейтинг: 0 / 0
Грамотное решение
    #38299649
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex.potekhinShSergealex.potekhin,

Сессия и так рвётся после закрытия брвузера. Именно браузера , а не страницы в закладке.
Сорри. Я имел ввиду закладку.
...
Рейтинг: 0 / 0
Грамотное решение
    #38299677
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,

тогда, если осталась хоть одна работающая вкладка на сайт, то
закрытие вкладки можно не считать, думаю.. а если закрыта
последняя, то это сродни закрытию браузера, правда кука все ещё
жива (на случай, если пользователь выберет «восстановить закрытую вкладку»),
но разве это имеет значение? то есть, конечно, по регилиозным
причинам её можно постараться прибить, но какой в этом смысл?
вообще какой-то бред. до сих пор не могу понять, какую роль
здесь вообще играют сессии.
...
Рейтинг: 0 / 0
Грамотное решение
    #38302449
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex.potekhinЧитал форум...
Мы сделали просто - в таблице авторизации пользователей добавили sissionID - GUID.

Если клиент авторизован и SessionID the same - нормальная работа. Если авторизация истекла или SessionId другая (продолжил с другого компьютера) - запись удаляется что заставляет проходить процесс авторизации снова. Если клиент оставит эту сессию и начнет работать на другом компьютере (даже если он был авторизован до этого) - мы заставляем его снова проходить авторизацию, попутно убивая процесс на другом компьютере.

Все очень просто и эффективно в случае если Вам надо чтобы человек имел только одну активную сессию на любом компьютере. Надеюсь что это то, что Вам надо...

Good luck!
...
Рейтинг: 0 / 0
Грамотное решение
    #38375864
Mike124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Chalex.potekhinЧитал форум...
Мы сделали просто - в таблице авторизации пользователей добавили sissionID - GUID.

Если клиент авторизован и SessionID the same - нормальная работа. Если авторизация истекла или SessionId другая (продолжил с другого компьютера) - запись удаляется что заставляет проходить процесс авторизации снова. Если клиент оставит эту сессию и начнет работать на другом компьютере (даже если он был авторизован до этого) - мы заставляем его снова проходить авторизацию, попутно убивая процесс на другом компьютере.

Все очень просто и эффективно в случае если Вам надо чтобы человек имел только одну активную сессию на любом компьютере. Надеюсь что это то, что Вам надо...

Good luck!

Неплохое решение, но...!

Человек работает на сайте, а в это время гнусный злоумышленник, ранее укравший у него пароль, садится за другой комп, входит под реквизитами владельца аккаунта и - ....

Можно конечно сказать, а нефиг щелкать...., но здесь технический форум и задачка актуальна. Итак, как узнать, что браузер закрыт?
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Грамотное решение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]