在我的案例中结束(杀死)cookie的正确方法是什么:
我想做,当用户关闭他的标签或浏览器时,cookie结束(或被杀死),因此它会自动注销用户。
到目前为止,我只在登录控制器中设置了这个:
if(ModelState.IsValid)
...
FormsAuthentication.SetAuthCookie(user.Username, false);
对于退出我有这个:
public ActionResult LogOut()
{
FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");
}
在网络混淆中我设置了这个:
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
:)
答案 0 :(得分:1)
ASP.NET MVC是RESTful /无状态的。这意味着您对会话如何工作的想法是不正确的(并且可以理解)。您正在使用表单身份验证,它使用Cookie,而不是会话状态。你在那里工作的是为登录设置了cookie。
一旦理解了这个概念,就可以开始为您想要实施的行为编写解决方案。
现在您知道它是如何工作的/寻找什么,答案就在这里:How do I log a user out when they close their browser or tab in ASP.NET MVC?
答案 1 :(得分:0)
既然您已经编辑了问题并且现在要求使用Cookie,那么方式仍然相同,我会执行以下步骤;
1)用户关闭标签后,立即提示弹出窗口,您可以要求确认: 为此,请点击此链接: Prompt before tab close
2)在确认中,您可以添加cookie清除逻辑。 (我希望你知道如何删除cookie,如果你最初添加cookie并为它们设置时间段,那么也要编写删除cookie的代码。)
让我知道这是否有助于您在我的应用程序中工作。