我在这里写了一篇关于如何做到这一点的深入教程:
http://www.danharman.net/2011/07/07/storing-custom-data-in-forms-authentication-tickets/
这维护了加密和身份验证,并使用 json 将一个类序列化到 UserData 字段中。
编辑:
博客不再存在,可以在此处的网络存档中找到存档。
来自博客的总结:
获取现有的 cookie 和 auth 票
HttpResponse response = HttpContext.Current.Response;
bool rememberMe = true;
var cookie = FormsAuthentication.GetAuthCookie(name, rememberMe);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
定义您的自定义数据(确保这可序列化为 json)
var userData = new YourUserClass(...);
使用您的数据和现有的身份验证票设置创建新的身份验证票
var newTicket = new FormsAuthenticationTicket(ticket.Version,
ticket.Name,
ticket.IssueDate,
ticket.Expiration,
ticket.IsPersistent,
userData.ToJson(), //This is where you'd set your user data
ticket.CookiePath);
var encTicket = FormsAuthentication.Encrypt(newTicket);
将您的自定义票证设置为 cookie 并添加到响应中
cookie.Value = encTicket;
response.Cookies.Add(cookie);