gpt4 book ai didi

asp.net - 在 .NET 3.5 中回发后,FormsAuthentication 不保留 UserData 字段

转载 作者:行者123 更新时间:2023-12-01 23:21:28 25 4
gpt4 key购买 nike

我从头开始创建了一个 FormsAuthenticationTicket,但发现稍后检索时,UserData 没有返回。这是使用的代码:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
user.UserId,
DateTime.Now,
DateTime.MaxValue,
false,
user.UserType);

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

Response.Cookies.Add(cookie);

但是,当在下一个Request 中读回时,我发现UserData 字段现在是空的:

string encryptedCookie = Request.Cookies[ FormsAuthentication.FormsCookieName ].Value;
FormsAuthenticationticket ticket = FormsAuthentication.Decrypt(encryptedCookie);
Assert.IsTrue( ticket.UserData.Length == 0 ); //TRUE!

有什么想法吗?

最佳答案

我想我找到了问题所在。如果你自己起个 cookie 名字好像就可以了!所以改变:

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

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

然后根据问题检索它:

string encryptedCookie = Request.Cookies[ "SiteCookie" ].Value;
FormsAuthenticationticket ticket = FormsAuthentication.Decrypt(encryptedCookie);
Assert.IsFalse( ticket.UserData.Length == 0 ); //Hooray! It works

.NET 可能会用它来做一些棘手的事情,所以把它放在一个新的中就可以了。

更新:

另外,票需要刷新,否则票会在用户使用网站时过期:

FormsAuthentication.RenewTicketIfOld(ticket); // Do before saving cookie

关于asp.net - 在 .NET 3.5 中回发后,FormsAuthentication 不保留 UserData 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3669204/

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