c# – 从asp.net中的不同浏览器标签识别登录的用户

前端之家收集整理的这篇文章主要介绍了c# – 从asp.net中的不同浏览器标签识别登录的用户前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个在asp.net上登录选项的网站.

如果我在两个浏览器选项卡中打开网站,并使用相同的用户帐户登录,并在两个选项卡中导航到主屏幕,现在我已从一个选项卡登录,并再次登录同一个选项卡,之后点击第二个选项卡,

我如何区分我从第一个标签或第二个标签代码背后发送请求?

如果请求是从第二个选项卡,我需要导航到应用程序登录屏幕.我该怎么办?

在我的主页上,我添加了逻辑

if (Session["UserID"] == null)
{
   Response.Redirect("Login.aspx");
}

但是问题是当我从第一个选项卡注销并再次登录时,在第二个选项卡刷新之后,Session [“UserID”]不为空,因此它将保留在那里.但是我需要重定向登录页面.我可以实现这个??

解决方法

我可以建议您使用JavaScript和Ajax Post进行重定向.我用它自己,找到可靠,满足需要.我仍然认为可能会有更好的方法来做到这一点.但是现在这样做会做你的工作.

下面的代码检查选项卡焦点/焦点丢失,并调用模糊和焦点上的Csharp代码.

<script type="text/javascript">
        //divClearMessages
        $(window).on("blur focus",function (e) {
            var prevType = $(this).data("prevType");


            if (prevType != e.type) {   //  script for Please Come Back
                switch (e.type) {
                    case "blur":
                        // Use this if you want to check something after user changes tab
                    case "focus":
                        $.ajax({
                            type: "POST",url: "main.aspx/CheckIfSessionIsNull",// Call here the Csharp method which checks the session and redirect user
                            contentType: "application/json; charset=utf-8",dataType: "json",success: function (retValue) {
                                // Do something with the return value from.Net method
                            }
                        });
                        break;
                }
            }

            $(this).data("prevType",e.type);
        })
    </script>

代码添加这个方法:(记得添加[WebMethod]属性)

[System.Web.Services.WebMethod]
    public static void CheckIfSessionIsNull()
    {
       if (System.Web.HttpContext.Current.Session["UserId"] == null)
          HttpContext.Current.Response.Redirect("Login.aspx");
    }

猜你在找的C#相关文章