Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к сайту для одного логина одна сессия 
:(
    Опции темы
MojoDS
Дата 31.1.2011, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 31.1.2011

Репутация: нет
Всего: нет



Здравствйте.
Нужно организовать доступ к сайту таким образом, чтобы под одним логином можно было зайти только одному пользователю, а не двум или более с разных компов.
Решено организовать доступ по следующему алгоритму:

В БД (Оракл) для пользователя добавляем признак активности.
При логине - если не активный - выставляем признак активности, сохраняем SessionID и IP-адрес
На "Выход" мы снимаем признак активности.

Если при логине выясняется, что этот клиент уже активный, то проверить его SessionID и IP-адрес
Если IP другой, то надо не пускаем - говорим, что есть уже активная сесссия.
Если IP тот же, тогда сказать, что уже есть активная сессия и чтобы он ее закрыл. 

Если сессия отвалилась(или был закрыт браузер), то при отключении сессии снимать флаг активности.

Проблема в том, как снять флаг активности, когда отвалилась сессия или браузар был закрыт.

Пробовал по событию Session_End в Global.asax.cs, но в этот момент сессия уже отвалилась и до БД уже не достучаться.

Подскажите как можно решить данную проблему? Может есть како-то другой способ?
Заранее спасибо за ответы.
PM MAIL   Вверх
Addmin
Дата 31.1.2011, 05:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 3.2.2006
Где: сослан в Сибирь

Репутация: нет
Всего: 15



Может быть, поставить в cron скрипт, который, буде активирован через скрипт авторизации, каждые пять минут будет проверять  состояние сессии и, не найдя её (браузер закоылся или таймаут сессии), удалит метку из БД?


--------------------
PM MAIL   Вверх
Bestoloch
  Дата 1.2.2011, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.6.2009

Репутация: нет
Всего: нет



Можно вместе с признаком активности хранить дату последней активности и например перед проверкой IP проверять тайм аут сессии, если с последней активности прошло времени больше чем время жизни сессии, то сессию считать закрытой.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0392 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.