我不确定如何形成身份验证。但我认为它只是根据表单身份验证超时创建 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);
}