我想在我的应用程序上提供功能,让用户检查他们希望无限期地保持登录状态(任意设置 cookie 过期时间为从现在起 3 个月)。
我处理这个的代码是
private static HttpCookie GetFormsAuthenticationCookie(string userNameResponse,
bool persistCookie)
{
var cookie = FormsAuthentication.GetAuthCookie(userNameResponse, persistCookie);
if (persistCookie)
cookie.Expires = DateTime.Now.AddMonths(3);
return cookie;
}
private void LoginUser(string userNameResponse, bool PersistCookie)
{
Response.Cookies.Add(GetFormsAuthenticationCookie(userNameResponse, PersistCookie));
string navigateAfterUrl = FormsAuthentication.GetRedirectUrl(userNameResponse,
PersistCookie);
Response.Redirect(navigateAfterUrl);
}
但是,稍后当我返回该站点时,我需要再次登录。我已验证该 cookie 与我的到期日期一起返回,并且它没有设置为会话 cookie(也通过关闭/重新打开浏览器进行测试,并且 cookie 仍然存在)。我的一个想法是它与 ASP.NET 会话到期时有关。
我的 web.config 中有一个特定的机器密钥设置,所以如果 IIS 重新启动等,相同的 cookie 不应该工作吗?是否有人对可能导致此问题的原因或至少有关如何进一步追踪此问题有任何建议,因为我想不出其他任何事情要做。