Как запретить пользователям входить на мой сайт более одного сеанса?

Я разрабатываю сайт ASP.net (с использованием .NET 4, EF, jQuery Ajax, SQL Server 2008 R2). На этом сайте я хочу запретить множественный вход . Я имею в виду, что если вы войдете на сайт, вы не сможете снова войти на сайт из другого браузера или компьютера, так как вы уже вошли в систему.

Я заложил идею и развил ее на своем сайте, но у меня есть проблема, и именно из-за этой проблемы я решаю задать здесь вопрос

У меня есть такая таблица 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

, а также есть код для удаления записи из этой таблицы, которая выполняется, когда:

  1. Пользователь пытается выйти из своей учетной записи
  2. в событии Session_End в global.asax

Все работает правильно и идеально, просто:

Проблема: когда пользователь закрывает браузер, эта строка не удаляется (я подумал, когда он закройте браузер, его строка в этой таблице будет удалена при событии Session_End , но этого не произошло !!!)

Что я могу сделать? Любое решение этой проблемы? Следует ли мне изменить свою стратегию или есть решение?

Извините за мой плохой синтаксис.Я новичок в английском

Любая идея может быть полезна

касательно

Foroughi

UPDATE1 : я не использую членство ASP и сам управляю своими пользователями

UPDATE2 : я использую режим InProc для состояния сеанса с таймаутом 20 минут

5
задан Ali Foroughi 9 February 2012 в 08:18
поделиться