cookies - 表单身份验证使用FormsAuthenticationTicket创建非持久 cookie

  显示原文与译文双语对照的内容

我在使用FormsAuthenticationTicket创建非持久cookie时遇到麻烦。 我希望在票证中存储 userdata,因此不能使用 FormsAuthentication.SetAuthCookie() 或者 FormsAuthentication.GetAuthCookie() 方法。 因此,我需要创建FormsAuthenticationTicket并将它的存储在HttpCookie中。

我的代码如下所示:


DateTime expiration = DateTime.Now.AddDays(7);



//Create ticket


FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2,


 user.Email,


 DateTime.Now,


 expiration,


 isPersistent,


 userData,


 FormsAuthentication.FormsCookiePath);



//Create cookie


HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));


cookie.Path = FormsAuthentication.FormsCookiePath;


if (isPersistent)


 cookie.Expires = expiration;



//Add cookie to response


HttpContext.Current.Response.Cookies.Add(cookie);



当变量isPersistent为 true 时,一切正常,cookie被持久化。 但是当isPersistent是 false 时,cookie仍然保持持久。 我在浏览器窗口中登录,关闭并再次打开浏览器,我仍在登录。 如何将cookie设置为非持久化?

是与会话cookie相同的非持久 cookie? 是存储在服务器上sessiondata的cookie信息,还是在每个请求/响应中传输到服务器?

时间: 原作者:

尝试删除:

if (isPersistent) { cookie.Expires = expiration; }

"。"。并将它的替换为:

if (!isPersistent) { cookie.Expires = DateTime.Now.AddYears(-1); }

原作者:
...