Исключение "двойного" входа на сайт под логином/паролем
От: Lexa-Lexa Россия www.agrobase.ru
Дата: 08.09.10 10:22
Оценка:
Доброго дня(утра/вечера/ночи) всем!

Задался вопросом, каков алгоритм должен быть, что бы обеспечить отсутствие "двойного" входа на сайт под одним логином/паролем.
Т.е. человек регистрируется, входит на сайт. Теперь необходимо сделать так, что бы с другого компьютера/браузера нельзя было зайти на сайт под этим же логином.

Самое простое — сделать в базе поле logged, и ставить при входе true, а при выходе false. Но пользователи забывают жать кнопочку "Выход". Дальнейшее развитие этого пути — автоматом сбрасывать через N минут (N у меня 20, как время сессии) поле в false. Но проблема осталась — если закрыть браузер — войти повторно раньше чем через 20 минут не получиться.

Что придумать то? в идеале нужно что бы при входе на втором компе — первого "выкидывало".

О технических аспектах. Сейчас все работает так:

bool saveMe = false;
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2, userName, DateTime.Now, DateTime.Now.AddMonths(1), saveMe, String.Empty);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
if (saveMe)
{
    authCookie.Expires = DateTime.Now.AddMonths(1);
}
context.Response.Cookies.Remove(authCookie.Name);
context.Response.Cookies.Add(authCookie);

FormsAuthentication.SetAuthCookie(userName, false);

ну и
FormsAuthentication.SignOut();
--

Автоматизированная справочная система "Сельхозтехника"
Re: Исключение "двойного" входа на сайт под логином/паролем
От: UA Украина  
Дата: 08.09.10 10:41
Оценка:
Здравствуйте, Lexa-Lexa, Вы писали:

Сделать еще таблицу Sessions в базе и раздавать каждому залогиненому юзеру session_id, которую также писать в куку.
Re: Исключение "двойного" входа на сайт под логином/паролем
От: TK Лес кывт.рф
Дата: 08.09.10 10:48
Оценка:
Здравствуйте, Lexa-Lexa, Вы писали:

LL>Самое простое — сделать в базе поле logged, и ставить при входе true, а при выходе false. Но пользователи забывают жать кнопочку "Выход". Дальнейшее развитие этого пути — автоматом сбрасывать через N минут (N у меня 20, как время сессии) поле в false. Но проблема осталась — если закрыть браузер — войти повторно раньше чем через 20 минут не получиться.


Запишите в базу тикет полученный при авторизации. Если тикет не совпал — делать пользователю принудительный logoff
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.