Как избежать использования одной учетной записи с нескольких машин? - PullRequest
2 голосов
/ 04 марта 2012

Требование : Пользователь может войти только один раз за период сеанса. например, если пользователь войдет в веб-сайт с двух разных компьютеров, на веб-сайте появится сообщение «Учетная запись уже используется». Это применимо, если пользователь войдет в систему из двух разных браузеров.

Я работаю над веб-приложением, которое использует сессию "InProc". приложение делает следующее:

A- When user login, Put Session_ID, user_ID and IP in a table called Sessions.

B- When Session_End is called, Set the row of Sessions table to be marked InActive.

C- When Application_Start is called, the web app deactivate all Sessions.

Во-первых: мне это не нравится, это вызывает тупик в базе данных. Я пока не могу установить причину.

Второе: гарантированно ли работает session_end во всех случаях, я не смог найти на странице MSDN сообщение о том, что Session_End вызывается при перезапуске пула приложений. См http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionstatemodule.end.aspx

У вас есть идея получше? Session_End вызывается каждый раз Пул приложений перерабатывается?

Спасибо

1 Ответ

1 голос
/ 05 марта 2012

Я думаю, что то, что у вас есть, является концептуально правильным, однако я не думаю, что вы можете полагаться на срабатывание события session_end, поскольку это произойдет только в том случае, если пользователь посетит ваш сайт после истечения срока его сеанса, а не просто закроет браузер.

Возможно, вам также понадобится служба, которая работает довольно регулярно и удаляет элементы из таблицы сеансов по истечении определенного периода (вы можете захотеть, чтобы поле даты обновлялось при создании сеанса)./refreshed).

Не знаю, откуда взялся тупик, но я предполагаю, что вы что-то не закрываете должным образом ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...