我不确定如何形成身份验证。但我认为它只是根据表单身份验证超时创建cookie。
所以鉴于我正在尝试根据发送到服务器的一些标头增加表单auth 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
之后过期。
我在这里出错了什么?
答案 0 :(得分:0)
你在做什么其他代码分支?看起来您只处理bypassSlidingExpiration
为假的情况。如果bypassSlidingExpiration
为真,那么您将采用默认值(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);
}