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

Я в основном хочу настроить в моем LogOn действии условный оператор, который просматривает имя пользователя и определяет, что имя пользователя уже зарегистрировано.

В этот момент пользователь должен быть проинформирован.

Эта учетная запись авторизована, если вы думаете, что вас похитили ... yada yada yada.

Я подумал, что могу добавить что-то после этого условия, есть ли что-то вроде моего метода выдумки Membership.CheckIfUserIsOnline(string username) уже там?

   if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            //See the line below, I made this method up.
            if (Membership.CheckIfUserIsOnline(model.UserName){
                ModelState.AddModelError("", "Someone else is logged into this account.");
            }

1 Ответ

3 голосов
/ 19 июля 2011

Если вы используете Session State, я бы хранил (в идеале в кэше всего приложения или, альтернативно, в базе данных вашего приложения) запись с ключом User ID, сохраняя Session ID.

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

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

...