【问题标题】:Forms authentication expires with session表单身份验证随会话过期
【发布时间】:2016-02-01 14:36:23
【问题描述】:

每当用户登录到 ASP.NET MVC 应用程序时,我都会像这样设置 Forms auth cookie:

var authTicket = new FormsAuthenticationTicket(
    1, //version
    user.Email, // user name
    DateTime.Now, //creation
    DateTime.Now.AddDays(1), //Expiration
    persistanceFlag, //Persistent
    userData);

var encTicket = FormsAuthentication.Encrypt(authTicket);
var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
Response.Cookies.Add(authCookie);

当使用 Firebug 检查 cookie 时,我希望 cookie 的过期时间为 24 小时后。 相反,Firefox 报告 cookie 与会话过期。 没看懂。

如何控制 cookie 的生命周期?

目标是不要求用户每天早上都登录。

【问题讨论】:

  • 我相信我正在做链接问题中描述的所有事情,但萤火虫仍然将“会话”报告为过期。
  • persistanceFlag的值是多少?
  • 我将persistanceFlag设置为true

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


【解决方案1】:

我对@9​​87654321@ 的理解是,您对预期行为是正确的,并且将persistanceFlag 设置为true 应该将cookie 的到期设置为与令牌的到期相同的值。

然而,值得注意的是,令牌到期设置正确,即使 cookie 到期似乎没有。这意味着一旦过期,尽管客户端仍会将 cookie 发送到服务器,但服务器不会接受它作为一种身份验证形式,用户将不得不重新进行身份验证。鉴于此,我不确定 cookie 在超时后是否过期(尽管看起来确实应该)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    相关资源
    最近更新 更多