简体   繁体   English

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

[英]Limit Only One Session Per User In ASP.NET Mvc 4

I am working on one web application in which i want to make sure that website allow only one login per user at a time. 我正在开发一个Web应用程序,在该应用程序中,我想确保该网站一次仅允许每个用户一次登录。 when user login i am updating table column islogged=1 when logoff i am updating islogged =0 but the problem is when user session timeout or if user closing browser i am unable to capture this events.i am using sqlserver state to store sessions so Session_End event is not fired in this state . 当用户登录时我正在更新表列islogged = 1当注销时我正在更新islogged = 0但问题是用户会话超时或用户关闭浏览器时我无法捕获此事件。我正在使用sqlserver状态来存储会话,因此Session_End在此状态下未触发事件。 it only works in InProc State. 它仅在InProc State中起作用。 and also in browser close event i have tried onunload event. 在浏览器关闭事件中,我也尝试过onunload事件。 but this event is fired on tab closed also. 但也会在关闭的标签页上触发此事件。 not able to differentiate tab close and browser close. 无法区分标签页关闭和浏览器关闭。 i want only one concurrent user login. 我只需要一个并发用户登录。 is there any other way to achieve this. 还有其他方法可以实现这一目标。

i am using this code to capture browser close event. 我正在使用此代码捕获浏览器关闭事件。

<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..."); }

                });
}

alternatively you can store store session id in DB along with the current loggedin status as true or false. 或者,您可以将存储会话ID与当前登录状态一起存储为DB或True。 when user hits just check if loggedin flag is true and take the action needed 当用户点击时,仅检查登录标志是否为真并采取所需的操作

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM