將實體框架6.0.0-rc1(Visual Studio 2013 RC附帶的)與asp.net身份版本1.0.0-rc1一起使用。如何使用asp.net身份更改當前用戶的用戶名後更改身份驗證Cookie
試圖讓用戶有機會改變他們的UserName
。 似乎沒有AuthenticationIdentityManager
下的功能,所以我使用EF更改數據(獲取當前用戶的用戶對象,更改用戶名和保存更改)。
問題是身份驗證Cookie保持不變,並且下一個請求失敗,因爲沒有這樣的用戶。
在過去的表單驗證我使用下面的代碼來解決這個問題。
var formsAuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
var isPersistent = FormsAuthentication.Decrypt(formsAuthCookie.Value).IsPersistent;
FormsAuthentication.SetAuthCookie(newUserName, isPersistent);
如何使用asp.net身份更新cookie?
UPDATE
下面的代碼似乎更新身份驗證Cookie。
var identity = new ClaimsIdentity(User.Identity);
identity.RemoveClaim(identity.FindFirst(identity.NameClaimType));
identity.AddClaim(new Claim(identity.NameClaimType, newUserName));
AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant
(new ClaimsPrincipal(identity), new AuthenticationProperties {IsPersistent = false});
剩下的問題是:如何提取當前驗證cookie IsPersistent
價值?
此代碼可能適用於RTM(尚未廣泛使用)。在RC1中沒有DefaultAuthenticationTypes和UserManager.CreateIdentityAsync()。 – aleyush
第二個問題:我如何獲取當前的IsPersistent值(我的目標只是更改UserName,而不是其他任何內容)? – aleyush
在發佈VS2013之前,最好在每晚構建中進行試驗。很少有開發人員發表的評論指出,許多RC1類在RTM中不可用,它將在11月份與VS2013一起發佈。 – jd4u