Я занимаюсь разработкой сайта ASP.net (с использованием .NET 4, EF, jQuery Ajax, SQL Server 2008 R2). На этом сайте я хочу помешать multi-login
. Я имею в виду, если вы входите на сайт, вы не можете войти на сайт снова с другого браузера или компьютера, поскольку вы уже вошли в систему.
Я привил идею и разработал ее на своем сайте, но у нее есть проблема, и именно из-за этой проблемы я решаю задать вопрос здесь
У меня есть таблица SQL Server, подобная этой:
Id [int] NOT NULL IDENTITY(1,1) //PK
UserId [int] NOT NULL //Relation to User table
Key [nvarchar](50) NOT NULL //Unique
Когда пользователь входит на сайт, я вставляю строку в эту таблицу следующим образом:
UserId = The Id of logged in user
Key = Session.SessionId
а также есть код для удаления записи из этой таблицы, которая выполняется, когда:
- Пользователь пытается выйти из своей учетной записи
- в
Session_End
событие в global.asax
Все работает правильно и идеально, просто:
Проблема: когда пользователь закрывает браузер, эта строка не удаляется (я думал, что когда он закроет браузер, его строка в этой таблице будет удалена при событии Session_End
, но это не так!)
Что я могу сделать? Любое решение для этой проблемы? Должен ли я изменить свою стратегию или есть решение?
Извините за мой плохой синтаксис. Я новичок в английском
Любая идея может быть полезна
привет
Foroughi
UPDATE1 : я не использую ASP членство и сам управляю своими пользователями
UPDATE2 : я использую режим InProc для моего состояния сеанса с 20-минутным таймаутом