如何使用JavaScript / jQuery同时限制多个用户登录

时间:2017-12-07 09:23:57

标签: javascript jquery

我使用JavaScript jQuery开发了一个ASP.NET MVC应用程序。

我已实施使用onbeforeunload / beforeunloadevent同时限制多个用户登录。

一切正常,但有时无法在onbeforeunload / beforeunloadevent中使用。

var myEvent = window.attachEvent || window.addEventListener;
var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable

myEvent(chkevent, function (e) { // For >=IE7, Chrome, Firefox
    if (!validNavigation)
    {
        $.ajax({
            url: '@Url.Action("ClearSession", "Account")',
            type: 'Post',
            data: "",
            dataType: "json",
            success: function (data)
            {
                console.log("onbeforeunload Success")
            },
            error: function (data) {
                console.log("onbeforeunload Error")
            }
        });
    }

    return null;
});

1 个答案:

答案 0 :(得分:0)

AJAX - jQuery中还有一个函数称为complete: function(){};function检查天气request is running是否在浏览器上显示相同的用户ID和密码,如下所示

complete: function() {
        $(this).data('requestRunning', false);
    }

此处的整个AJAX-jQuery实现相应地查看并实施,我希望它能为您工作

代码

$('#do-login').click(function(e) {
    var me = $(this);
    e.preventDefault();

    if ( me.data('requestRunning') ) {
        return;
    }

    me.data('requestRunning', true);

    $.ajax({
        type: "POST",
        url: "/php/auth/login.php",
        data: $("#login-form").serialize(),
        success: function(msg) {
            //stuffs
        },
        complete: function() {
            me.data('requestRunning', false);
        }
    });      
}); 

请参阅此me.data('requestRunning', false);是否会获得针对相同用户ID和密码运行的任何请求returns false并取消登录。

如需更多帮助,请参阅此处链接Duplicate, Ajax prevent multiple request on click

这不是完美的解决方案,但您可以像这样实施