动态扩展表单身份验证超时

时间:2014-02-28 15:48:58

标签: c# asp.net cookies timeout forms-authentication

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

我在这里出错了什么?

1 个答案:

答案 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);
}