我正在尝试在Web应用程序中实现以下方案:
以下是我目前正在编写的代码:
HttpCookie cookie = FormsAuthentication.GetAuthCookie(loginView.UserName, loginView.RememberMe);
DateTime ExpirationTime = loginView.RememberMe == true ? DateTime.Now.AddMonths(1) : DateTime.Now.AddMinutes(10);
cookie.Name = "Cookie1";
string userData = JsonConvert.SerializeObject(userModel);
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket
(
1, loginView.Username, DateTime.Now, ExpirationTime, loginView.RememberMe, userData, FormsAuthentication.FormsCookiePath
);
string enTicket = FormsAuthentication.Encrypt(authTicket);
cookie.Value = enTicket;
Response.Cookies.Add(cookie);
在Global.asax中登录后,我从cookie中获取所有loginView用户数据并将其存储在CustomPrincipal类中。
“记住我”机制按预期工作。但是问题是票证似乎没有过期,我也从未注销(我一直在等待尝试查看afk时是否注销)。根据{{3}}
,当我手动设置Cookie的过期日期时,超时效果很好,但是我却失去了“记住我”机制...对于非持久性cookie,如果票证已过期,则cookie 也会过期,并且用户将被重定向到登录页面。
我觉得我想念一些东西...