ограничить второй вход в систему, пока активен первый сеанс входа в систему

В случае веб-приложения Asp.NET с использованием сеанса сервера состояний и веб-фермы; Как запретить пользователю вход в систему несколько раз. Если пользователь уже вошел в систему, ему не должно быть разрешено входить в систему, используя те же учетные данные из другого браузера. Я нашел ссылку для автоматического выхода из предыдущего сеанса Принудительное использование одного сеанса. Но требование состоит в том, чтобы поддерживать первую сессию, а не выходить из него. всякий раз, когда второй сеанс пытается войти в систему, он должен получить сообщение об ошибке «Пользователь уже вошел в систему».

У нас есть время сеанса из 20 мин.

Заранее спасибо.


person Ajay Verma    schedule 18.02.2015    source источник
comment
Вам нужно указать, о какой версии ASP.NET MVC вы говорите. Если вы используете ASP.NET MVC 5, вы должны сделать это через ASP.NET Identity.   -  person Jon Galloway    schedule 19.02.2015


Ответы (2)


Вы можете попробовать это: для currect browser

if (!Session.IsNewSession && Request.UrlReferrer == null)
{
    // new 
}
person PPB    schedule 18.02.2015
comment
Как это будет работать, если пользователь входит в систему с разных компьютеров? - person Ajay Verma; 18.02.2015

Для этого вы должны установить статус IsLoggedin в своей БД. При входе в систему вы должны проверить этот статус. Если это true, то пользователь уже вошел в систему. А пока logout вы должны изменить это на false.

Если пользователь закрыл браузер

 $(function () {
        //logic to signout user when he closes browser
        window.onclick = function () {
            clicked = true;
        };

        window.onunload = function () {
            if (clicked == false) {
                $.get("/account/logout");
            }
        };
    });

При выходе из системы вы можете проверить if (GetUserContext() != null), а затем изменить статус IsLoggedIn.

person Ajay    schedule 18.02.2015
comment
Но как мы будем действовать, если пользователь закроет браузер или сессия истечет из-за бездействия в течение 20 минут? - person Ajay Verma; 18.02.2015
comment
Вы должны добавить код по истечении срока действия сеанса. Для закрытия браузера проверьте мое редактирование - person Ajay; 18.02.2015
comment
Window.Onclick Window.OnClick срабатывает даже при перенаправлении с одной страницы на другую. Также для кода, которым вы поделились, он будет выполняться при любом щелчке мыши по окну. Что такое GetUserContext()? Это HttpContext.User?? - person Ajay Verma; 18.02.2015
comment
На моей стороне работает нормально. Когда я нажимаю кнопку закрытия окон, она вызывает действие logout. Да это HttpContext.User - person Ajay; 18.02.2015
comment
Добавьте данный скрипт на _Layout.cshtml страницу. - person Ajay; 18.02.2015