FormsAuthenticationTicket
私は同じ仕事をすることになっているコードの2つのブロックを持っていますUserData
.
最初のコードは、 を含むすべてを正しく読み取りますUserData
。2 番目には含まれませんUserData
。空の文字列を返すだけです。空のオブジェクトの場合、例外がスローされたときに気づきました。
何か案が?
最初のコード:
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = HttpContext.Request.Cookies[cookieName];
if (authCookie != null)
{
FormsAuthenticationTicket oldTicket = FormsAuthentication.Decrypt(authCookie.Value);
UserData userDataObj = JsonConvert.DeserializeObject<UserData>(oldTicket.UserData);
userDataObj.PassChangeRequired = user.PasswordChangeRequired;
string userdata = JsonConvert.SerializeObject(userDataObj);
FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(
oldTicket.Version,
oldTicket.Name,
oldTicket.IssueDate,
oldTicket.Expiration,
oldTicket.IsPersistent,
userdata,
oldTicket.CookiePath);
authCookie.Value = FormsAuthentication.Encrypt(newTicket);
Response.Cookies.Set(authCookie);
}
2 番目のコード:
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(user.UserName, false);
if (authCookie != null)
{
FormsAuthenticationTicket oldTicket = FormsAuthentication.Decrypt(authCookie.Value);
UserData userDataObj = JsonConvert.DeserializeObject<UserData>(oldTicket.UserData);
userDataObj.PassChangeRequired = user.PasswordChangeRequired;
string userdata = JsonConvert.SerializeObject(userDataObj);
FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(
oldTicket.Version,
oldTicket.Name,
oldTicket.IssueDate,
oldTicket.Expiration,
oldTicket.IsPersistent,
userdata,
oldTicket.CookiePath);
authCookie.Value = FormsAuthentication.Encrypt(newTicket);
Response.Cookies.Set(authCookie);
}