gpt4 book ai didi

cookies - 使用 FormsAuthenticationTicket 创建非持久性 cookie

转载 作者:行者123 更新时间:2023-12-04 12:44:01 24 4
gpt4 key购买 nike

我在使用 FormsAuthenticationTicket 创建非持久性 cookie 时遇到问题。我想在票证中存储用户数据,所以我不能使用 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 为真时,一切正常,cookie 被持久化。但是当 isPersistent 为 false 时,cookie 似乎仍然存在。我在浏览器窗口中登录,关闭它并再次打开浏览器,但我仍然处于登录状态。如何将 cookie 设置为非持久性?

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

最佳答案

尝试删除:
if (isPersistent)
{ cookie.Expires = expiration; }

...并将其替换为:
if (!isPersistent) {
cookie.Expires = DateTime.Now.AddYears(-1); }

关于cookies - 使用 FormsAuthenticationTicket 创建非持久性 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1819351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com