我有一個ASP.NET身份的問題。在我的應用程序,我想用戶只要有人增加了將它們添加到表dbo.AspNetUsers,一項民意調查與他們的郵件ADRESS,像這樣:ASP.NET身份,註冊手動添加用戶而不刪除他
var user = new ApplicationUser
{
UserName = model.Email,
Email = model.Email,
TwoFactorEnabled = false,
EmailConfirmed = false,
Registered = true
};
_dbContext.ApplicationUsers.Add(user);
_dbContext.SaveChanges();
如果誰加入這樣對數據庫的人早些時候,想要向自己的mailadress註冊自己,我不想刪除手動添加的用戶並將其註冊爲新用戶,因爲其他關係已經與他的ID相關聯,並且約束條件不允許這樣做。我也無法刪除連接的關係,因爲其他用戶也與他們有關。
我試圖在數據庫中像這樣的hashedPassword手動添加到他:
_dbContext.ApplicationUsers.FirstOrDefault(u => u.Email == model.Email).PasswordHash =
this.HashPassword(user, model.Password);
_dbContext.SaveChanges();
但隨後登錄中 「System.Security失敗,因爲內部服務器錯誤的,因爲一個NULL值.Claims.Claim ..ctor(String type,String value,String valueType,String issuer,String originalIssuer,ClaimsIdentity subject,String propertyKey,String propertyValue)「。
有人知道一個解決方案來註冊一個用戶,他已經手動添加,而不刪除他嗎?
感謝您的回答!
編輯/解決方案
這裏是解決方案:
在第一個步驟,只需要創建一個默認的密碼的用戶,那麼如果他想註冊,刪除密碼,並添加密碼從RegisterModel,像這樣:
var result = await _userManager.CreateAsync(user, "DefaultPassword1.");
await _userManager.RemovePasswordAsync(user);
var result = await _userManager.AddPasswordAsync(user, model.Password);
您應該真的使用['UserManager']上的方法(https://msdn.microsoft.com/zh-cn/library/dn613059(v = vs108).aspx)添加/刪除/更新ASP.NET身份表中的記錄。 –