动态延长表单身份验证超时



我不确定如何形成身份验证。但我认为它只是根据表单身份验证超时创建 cookie。

因此,鉴于我正在尝试根据发送到服务器的某些标头增加表单身份验证cookie过期时间。为此,我禁用了slidingExpiration以便自己计算到期时间。

Application_BeginRequest我正在做:

if (!bypassSlidingExpiration)
{
    var authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
    authCookie.Expires = DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes);
    Response.Cookies.Add(authCookie);
}

但无论如何bypassSlidingExpiration我的会话在 FormsAuthentication.Timeout 后过期.

我在这里出了什么问题?

你在另一个代码分支做什么?看起来您只是在处理bypassSlidingExpiration是假的情况。如果bypassSlidingExpiration为 true,则采用默认值(30 分钟,或在 web.config 中或以编程方式指定的任何值)。

您可以考虑使用 FormsAuthentication.SetAuthCookie(username, true) 绕过滑动过期。第二个参数是 cookie 是否应该是持久性的。最好避免手动操作cookie。如果您出于某种原因必须这样做,这样的事情可能会起作用:

if (bypassSlidingExpiration)
{
    var authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
    authCookie.Expires = DateTime.MaxValue;
    Response.Cookies.Add(authCookie);
}

相关内容

  • 没有找到相关文章

最新更新