【问题标题】:How to Delete Authentication Cookie如何删除身份验证 Cookie
【发布时间】:2012-02-08 18:50:44
【问题描述】:

我正在开发 ASP.NET MVC 应用程序。我做了一些更改以在最新版本的 cookie 中保存一些额外的信息。 我的一些客户仍在运行旧版本。 有什么方法可以让我现有客户的现有 cookie 过期,并在他们连接到我在 IIS 中托管的新应用程序时强制他们再次登录?

谢谢,

【问题讨论】:

  • 只需将 cookie 的日期设置为某个已经过时的日期....它将确保用户再次登录

标签: asp.net asp.net-mvc-3 cookies session-cookies


【解决方案1】:

您可以使用SignOut 静态方法:

FormsAuthentication.SignOut();

这将删除身份验证 cookie,并且在 后续 请求中,用户将不会通过身份验证。我强调了随后这个词,因为在调用这个方法之后你应该重定向。

【讨论】:

  • 我应该把这条线放在哪里。恐怕,无论我将这条线放在哪里,它都会强制用户每次登录......
  • @SutikshanDubey,您将这一行放在某个控制器操作中,当当前用户导航到该操作时,您希望从该操作中将其注销。
  • 这实际上对我不起作用,但它让我走上了正轨。我已经重建了aspnetdb,但浏览器中仍然有一个FormsAuthenticationCookie。然后我在 Request.Authenticated==true 的 catch-22 中,但 GetUser() 返回 null;因此,没有用户退出。解决方案是删除浏览器上的所有 cookie。
【解决方案2】:

我在 web.config 中为我的 cookie 赋予了更新的名称,这似乎解决了我的问题:-

 <forms loginUrl="~/Account/LogOn" name="InsightWebMobileCookie2" timeout="10000" slidingExpiration="true" />

【讨论】:

    【解决方案3】:

    这里的问题是您无法读取 cookie 的过期日期,因此您无法从 cookie 中知道旧用户是谁。

    所以你的选择是:

    1. 如果您能确定谁来自“旧”版本 - 有逻辑使他们的 cookie 过期。
    2. 如果每个人都没有名为“VersionLogout”的 cookie,则强制他们注销一次。一旦你强制他们注销,设置一个名为“VersionLogout”的cookie,例如值为1.2,这样你就知道你已经强制他们注销特定版本并且他们(继续)不会再次收到提示。李>

    您可以将该代码放入 global.asax 中的 Application_AuthenticateRequest 事件中。此时用户已通过身份验证,因此您可以在那里检查他们的 cookie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-30
      • 2017-04-28
      • 2016-03-28
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多