延长Auth Cookie的有效期以使用户保持登录状态

时间:2019-02-18 09:46:23

标签: c# asp.net authentication

如果用户继续使用该网站,我希望他们保持登录状态。在web.config中设置超时仅设置他们上次登录的截止日期-

<authentication mode="Forms">
    <forms loginUrl="~/Account/User/SignIn" slidingExpiration="true" timeout="43200" defaultUrl="~/account/" />
</authentication>

因此,无论他们是否每天使用网站,他们都将在30天内自动注销。正在重置每个页面上的到期日期加载正确的解决方案,就像这样-

HttpCookie cookie = Request.Cookies[".ASPXAUTH"];
if (!cookie.Value.IsEmpty())
{
    cookie.Expires = DateTime.Now.AddMinutes(Convert.ToInt32(43200));
    Response.Cookies.Set(cookie);
}

1 个答案:

答案 0 :(得分:1)

您已将滑动到期属性设置为true,因此除了等待15天进行测试外,您无需执行任何其他操作。

  

如果提出请求并且超过了超时间隔的一半,则滑动到期时间将重置有效身份验证cookie的到期时间。

以上内容来自microsoft

即使您一直处于打开状态,直到至少一半的超时值都到期,也不会重置到期,因此在您的情况下,直到您经过第15天,它才看起来像在工作。

尝试几个小时,然后进行测试以查看其是否正常运行,或者您是否已经尝试过并且无法重置?

请注意,但请仔细考虑您网站的安全性,如果设置如此长的超时时间以及滑动到期时间,则可能会比要严格控制的情况更安全。例如,让它在30天后过期,因此他们必须重新认证或将超时减少到一两天。他们从OWASP的安全编码指南中提出建议

  

基于平衡风险和业务功能要求,建立尽可能短的会话不活动超时。在大多数情况下,时间不应超过几个小时。