deepak690 Ответов: 2

Ограничьте только один сеанс для каждого пользователя в ASP.NET Mvc 4


Я работаю над одним веб-приложением, в котором я хочу убедиться, что веб-сайт разрешает только один вход для каждого пользователя одновременно.
при входе пользователя в систему я обновляю столбец таблицы islogged=1 при выходе из системы я обновляю islogged =0
но проблема заключается в том, что когда пользователь тайм-аут сеанса или если пользователь закрывает браузер, я не могу захватить эти события.я использую состояние sqlserver для хранения сеансов, поэтому событие Session_End не запускается в этом состоянии .
он работает только в состоянии InProc. а также в событии закрытия браузера я попробовал событие onunload. но это событие срабатывает и на закрытой вкладке. не в состоянии различить закрытие вкладки и закрытие браузера.
мне нужен только один одновременный вход пользователя. есть ли другой способ достичь этого?

я использую этот код для захвата события закрытия браузера.
&ЛТ;класс тела="исправлено-топ" функция onclick="нажата=истина;" метода onunload="CheckBrowser()"&ГТ;

   <script type="text/javascript">
        var clicked = false;
       // var xmlHttp
    //    var browser = navigator.appName;

        function CheckBrowser() {
            debugger

            //  var browserClose = isUserClickedCloseButton();
            if (clicked == false) {
                $.ajax({
                    url: "@Url.Content("~/Account/LogOff")",
                    type: 'Post',
                    success: function (data) {

                    },
                    error: function () { alert("Error On Logut..."); }

                });
}

2 Ответов

Рейтинг:
2

Member 13834376

<script type="text/javascript"> 
    var clicked = false;
    function CheckBrowser()
    {
        debugger;
        if (clicked == false)
        {
            //Browser closed
        }
        else
        {
            //redirected 
            clicked = false;
        }
    }
 
    function bodyUnload()
    {
        debugger;
        if (clicked == false)//browser is closed
        {
            debugger;
            var request = GetRequest();
           
            request.open("GET", "Logout", true);
            request.send();
        }
    }
 
    function GetRequest()
    {
        debugger;
        var request = null;
        if (window.XMLHttpRequest)
        {
            //incase of IE7,FF, Opera and Safari browser
            request = new XMLHttpRequest();
        }
        else
        {
            //for old browser like IE 6.x and IE 5.x
            request = new ActiveXObject('MSXML2.XMLHTTP.3.0');
        }
        return request;
    }



и добавьте это в тег body
onunload="bodyUnload();" Onclick="clicked=true;


Рейтинг:
0

Mathew Soji

Пожалуйста, проверьте приведенные ниже ссылки, которые имеют аналогичные вопросы и ответы.

http://stackoverflow.com/questions/17515716/only-one-concurrent-login-per-user-in-asp-net[^]

Только один одновременный вход в систему для каждого идентификатора пользователя Asp.net[^]