C# 当用户在ASP.NET MVC中关闭浏览器或选项卡时,如何注销?
当用户关闭选项卡或浏览器时,我需要注销用户,如何在ASP.NET MVC中注销?您可以做一些事情来确保用户在浏览器关闭时注销,但这取决于您如何设置FormsAuthentication cookie: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
Cookieless=True
FormsAuthentication.SetAuthCookie
将持久性设置为false
窗口上的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;';
});