asp.net - 关闭浏览器后删除身份验证/ session cookie

标签 asp.net authentication session cookies persistent

关闭浏览器后,要保留Cookie,需要执行哪些确切步骤?目前,我有:

  • createPersistentCookietrue事件上设置为LoggedIn
  • 已指定
  • MachineKey。
  • 设置为true的表单滑动到期时间。

  • 只要浏览器处于打开状态,用户就将保持登录状态,但是一旦关闭浏览器,则无论多长时间,用户都需要再次登录。我想念什么?

    编辑:
    我浏览了marapet指出的文章(请参阅下面的评论),这使我对票证是否确实具有IsPersistent标志(确实如此)感兴趣。解密的票证如下所示:System.Web.Security.FormsAuthentication.Decrypt(Request.Cookies[System.Web.Security.FormsAuthentication.FormsCookieName].Value) {System.Web.Security.FormsAuthenticationTicket} CookiePath: "/" Expiration: {19/08/2010 17:27:14} Expired: false IsPersistent: true IssueDate: {19/07/2010 17:27:14} Name: "alex" UserData: "" Version: 2所有详细信息都是正确的,并且与我在LoggedIn事件中设置的详细信息相对应。我可以直接从cookie中检索的cookie值更多,与此相同。但是,一旦我关闭浏览器,cookie就会丢失。

    但是,我注意到的是,出于某些原因,载有票证的cookie的日期已重置。首先,我无法覆盖web.config中的设置,因此在LoggedIn事件结束时,它的Expires属性是发布日期后的4000分钟,而不是我以编程方式设置的一个月。然后在页面加载Cookie后,我使用FormsAuthentication.FormsCookieName检索的Expires属性为01/01/0001。我想也许这就是问题所在?任何想法将不胜感激。

    编辑#2:
    我正在更改标题和标签以包括 session ,因为事实证明这与问题/解决方案有关

    最佳答案

    因此,我最终找到了解决方案。事实证明,身份验证cookie并不是问题所在(正确保留了它,或者如果处理程序未删除它,而是错误地确定用户未根据进行登录,那么身份验证cookie可能会出现问题。缺少的 session )。问题是 session cookie丢失或没有正确识别。因此,解决方法是在登录过程中手动添加 session cookie,如下所示:

    HttpCookie authCookie = new HttpCookie("ASP.NET_SessionId", Session.SessionID);
    authCookie.Domain = ".mydomain.com";
    authCookie.Expires = DateTime.Now.AddMonths(1);
    Response.Cookies.Add(authCookie);
    

    现在,当浏览器再次打开时,将正确识别 session 并恢复用户 session 。

    关于asp.net - 关闭浏览器后删除身份验证/ session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3102241/

    相关文章:

    asp.net - Asp.net 中的下拉列表验证使用必填字段验证器

    c# - 如何从 OWIN 中间件重定向用户?

    asp.net - 在 Web Gardens 中添加动态路由

    PHP 登录 - 从数据库获取用户数据或存储在 session 中?

    php - 这是 session 问题吗?

    html - 如何为客户端 dart 应用程序构建安全的无状态身份验证系统

    javascript - 从隐藏的代码中过滤 TextBox 的 KeyPress 事件上的 GridView

    c# - 设置自定义主体/身份的最佳位置在哪里?

    authentication - 使用 Torii 和 Simple-Auth : no authentication data returned 登录 Facebook

    google-app-engine - Google 应用程序引擎联合 (openid) 登录本地主机