我似乎無法在任何地方找到答案。我正在使用自定義成員資格提供程序和成員資格用戶以及我自己的表格,這看起來顯得太過於麻煩了。當更新用戶記錄時,看起來我需要更新其成員資格用戶實例,否則在依賴來自成員資格用戶的數據時,它不對應於更新的數據庫。更新自定義會員用戶
我已經建立了我自己的更新成員資格用戶的方法,因爲現有的一個只有接受它自己的MembershipUser類:
public static void UpdateAccountUser(AccountUser accountUser)
{
// Custom MembershipUser
ToMembershipUser user = new ToMembershipUser(
"AccountUserMembershipProvider",
accountUser.FirstName + " " + accountUser.LastName,
accountUser.ID,
accountUser.Email,
"",
"",
true,
false,
DateTime.Now,
DateTime.MinValue,
DateTime.MinValue,
DateTime.MinValue,
DateTime.MinValue);
// Fill additional properties
user.ID = accountUser.ID;
user.Email = accountUser.Email;
user.FirstName = accountUser.FirstName;
user.LastName = accountUser.LastName;
user.Password = accountUser.Password;
user.MediaID = accountUser.MediaID;
user.Media = accountUser.Media;
user.Identity = accountUser.Identity;
user.CreatedAt = accountUser.CreatedAt;
user.UpdatedAt = accountUser.UpdatedAt;
UpdateCookie(user.Email);
}
private static void UpdateCookie(string email)
{
HttpCookie cookie = FormsAuthentication.GetAuthCookie(email, true);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
// Store UserData inside the Forms Ticket with all the attributes
// in sync with the web.config
var newticket = new FormsAuthenticationTicket(ticket.Version,
ticket.Name,
ticket.IssueDate,
ticket.Expiration,
true, // always persistent
email,
ticket.CookiePath);
// Encrypt the ticket and store it in the cookie
cookie.Value = FormsAuthentication.Encrypt(newticket);
cookie.Expires = newticket.Expiration.AddHours(24);
HttpContext.Current.Response.Cookies.Set(cookie);
}
現在很明顯,這只是創建一個新的實例,而不是更新現有的一個,這不允許我在沒有註銷並重新登錄的情況下查看更新的細節。任何想法?
編輯 因此,我設法找到了別人使用自己的自定義更新方法的例子,但他們似乎在做的是更新數據庫而不是MembershipUser本身。我已經在做這個了?
我試圖改爲更新FormsAuthenticationCookie,然後調用Membership.GetUser()時,我至少傳遞一個更新的User.Identity.Name,但無效,即使數據庫更新仍然是舊數據。我已經跑出去的想法......
這可能可能是昨天的問題MembershipUser not getting updated result from database