在没有注销MVC4的情况下删除cookie的正确方法是什么?

时间:2014-05-29 07:21:41

标签: asp.net asp.net-mvc-4 session kill

在我的案例中结束(杀死)cookie的正确方法是什么:

  1. 当用户首次连接到网站时,它将他/她连接到索引。
  2. 然后用户输入用户名和密码。
  3. 它连接到他的帐户(" _Layout.cshtml"标题开头 - 标题有导航菜单,以查看一些结果)。
  4. 现在,!如果用户关闭此选项卡或关闭浏览器而不点击注销,请高兴:当用户再次连接到网站时,它会将他/她重定向到索引(登录表单的位置),带有显示标题的布局。因此,用户可以通过单击导航菜单再次导航到他/她的帐户 - 不必再次登录。
  5. 我想做,当用户关闭他的标签或浏览器时,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>
    

    :)

2 个答案:

答案 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的代码。)

让我知道这是否有助于您在我的应用程序中工作。