ASP.NET Mvc 4中每个用户仅限一个会话

时间:2014-11-29 07:11:54

标签: javascript c# jquery asp.net asp.net-mvc

我正在开发一个Web应用程序,我希望确保该网站每个用户一次只能登录一次。 当用户登录时我正在更新表列islogged = 1当我正在更新loglog时islogged = 0 但问题是当用户会话超时或用户关闭浏览器时我无法捕获此事件。我正在使用sqlserver状态来存储会话,因此在此状态下不会触发Session_End事件。 它只适用于InProc State。并且在浏览器关闭事件中我尝试过onunload事件。但是这个事件也会在关闭标签时触发。无法区分标签关闭和浏览器关闭。 我只想要一个并发用户登录。有没有其他方法来实现这一目标。

我正在使用此代码捕获浏览器关闭事件。

<body class="fixed-top" onclick="clicked=true;" onunload="CheckBrowser()">

    &lt;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 个答案:

答案 0 :(得分:0)

或者,您可以将商店会话ID与当前登录状态一起存储为true或false。当用户点击时,只检查loggedin标志是否为真并采取所需的操作

答案 1 :(得分:0)