Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当用户在ASP.NET MVC中关闭浏览器或选项卡时,如何注销?_C#_Asp.net_Asp.net Mvc_Authentication_Form Authentication - Fatal编程技术网

C# 当用户在ASP.NET MVC中关闭浏览器或选项卡时,如何注销?

C# 当用户在ASP.NET MVC中关闭浏览器或选项卡时,如何注销?,c#,asp.net,asp.net-mvc,authentication,form-authentication,C#,Asp.net,Asp.net Mvc,Authentication,Form Authentication,当用户关闭选项卡或浏览器时,我需要注销用户,如何在ASP.NET MVC中注销?您可以做一些事情来确保用户在浏览器关闭时注销,但这取决于您如何设置FormsAuthentication cookie: 使用Cookieless=True 将FormsAuthenticationTicket设置为不持久 使用FormsAuthentication.SetAuthCookie将持久性设置为false 使用JavaScript方法删除窗口上的cookie。卸载 Cookieless=True方法: F

当用户关闭选项卡或浏览器时,我需要注销用户,如何在ASP.NET MVC中注销?

您可以做一些事情来确保用户在浏览器关闭时注销,但这取决于您如何设置FormsAuthentication cookie:

  • 使用
    Cookieless=True
  • 将FormsAuthenticationTicket设置为不持久
  • 使用
    FormsAuthentication.SetAuthCookie
    将持久性设置为
    false
  • 使用JavaScript方法删除
    窗口上的cookie。卸载
  • Cookieless=True
    方法:
    FormsAuthentication.SetAuthCookie()
    Approach 默认情况下,如果未设置
    持久性
    ,则身份验证cookie将在会话结束时过期(当用户关闭浏览器时)

    JavaScript方法: 没有万无一失的方法;你所能做的就是希望用户的浏览器能够合作。如果你真的,真的,真的,想让cookie消失,你可以尝试一种JavaScript方法,但是如果用户禁用了JavaScript,那是行不通的

    window.addEventListener('unload', function(event) {
       document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    });
    
    其他注意事项
    使用哪种浏览器也很重要。Chrome具有在后台运行的能力,而且(我通过艰难的方式发现了这一点)。

    您目前有什么可以尝试的吗?您目前掌握的任何代码/想法都将有助于提供更好的答案。我试图在会话开始时澄清,但结果不好,请看,@CodeCaster这些都是非常相关的问题——它们都以不同的方式解决问题。@George这就是为什么我们需要更多的参考问题和答案,仔细解释每种方法的优缺点,回答研究不足的问题的人越来越少,因为他们恰好知道如何解决问题的某个特定部分。您是否重新打开该问题以发布此答案?:)如果用户只关闭选项卡,这将不起作用,当用户导航到同一选项卡上的不同页面并稍后返回时也不会起作用。我喜欢Javascript方法,但代码中的变量名是什么?是cookie名称吗?如果是,我从何处获得它?它是使用asp标识创建的??
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
        1,                   //version
        "blah",              //Cookie Name 
    
    );
    
    FormsAuthentication.SetAuthCookie("CookieValue", false); //second argument is persistent'
    
    window.addEventListener('unload', function(event) {
       document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    });