每当用户登录 ASP.NET MVC 应用程序时,我都会像这样设置 Forms auth cookie:
var authTicket = new FormsAuthenticationTicket(
1, //version
user.Email, // user name
DateTime.Now, //creation
DateTime.Now.AddDays(1), //Expiration
persistanceFlag, //Persistent
userData);
var encTicket = FormsAuthentication.Encrypt(authTicket);
var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
Response.Cookies.Add(authCookie);
在检查 cookie 时说,Firebug 我希望 cookie 的到期时间是从现在起 24 小时。
相反,Firefox 报告 cookie 随 session 过期。
我不明白。
如何控制cookie的生命周期?
目标是不要求用户每天早上登录。
最佳答案
我对the documentation的理解是您对预期行为的正确性以及该设置 persistanceFlag
至 true
应该将 cookie 的到期时间设置为与 token 的到期时间相同的值。
但是,值得注意的是,即使 cookie 似乎没有过期, token 过期时间也设置正确。这意味着一旦过期,尽管客户端仍会将 cookie 发送到服务器,但服务器不会接受它作为一种身份验证形式,用户将不得不重新进行身份验证。有鉴于此,我不确定 cookie 在超时过后不会过期是否重要(即使它看起来确实应该如此)。
关于asp.net - 表单例份验证随 session 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35133187/