![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| MojoDS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 31.1.2011 Репутация: нет Всего: нет |
Здравствйте.
Нужно организовать доступ к сайту таким образом, чтобы под одним логином можно было зайти только одному пользователю, а не двум или более с разных компов. Решено организовать доступ по следующему алгоритму: В БД (Оракл) для пользователя добавляем признак активности. При логине - если не активный - выставляем признак активности, сохраняем SessionID и IP-адрес На "Выход" мы снимаем признак активности. Если при логине выясняется, что этот клиент уже активный, то проверить его SessionID и IP-адрес Если IP другой, то надо не пускаем - говорим, что есть уже активная сесссия. Если IP тот же, тогда сказать, что уже есть активная сессия и чтобы он ее закрыл. Если сессия отвалилась(или был закрыт браузер), то при отключении сессии снимать флаг активности. Проблема в том, как снять флаг активности, когда отвалилась сессия или браузар был закрыт. Пробовал по событию Session_End в Global.asax.cs, но в этот момент сессия уже отвалилась и до БД уже не достучаться. Подскажите как можно решить данную проблему? Может есть како-то другой способ? Заранее спасибо за ответы. |
|||
|
||||
| Addmin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 3.2.2006 Где: сослан в Сибирь Репутация: нет Всего: 15 |
Может быть, поставить в cron скрипт, который, буде активирован через скрипт авторизации, каждые пять минут будет проверять состояние сессии и, не найдя её (браузер закоылся или таймаут сессии), удалит метку из БД?
-------------------- SimpleFit.ru - блог о том, как заниматься спортом нормальным людям -- Стимул работы в Сибири - комары. |
|||
|
||||
| Bestoloch |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
Можно вместе с признаком активности хранить дату последней активности и например перед проверкой IP проверять тайм аут сессии, если с последней активности прошло времени больше чем время жизни сессии, то сессию считать закрытой.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |