У меня проблема с идентификатором ASP.NET. В моем приложении, я хочу, чтобы добавить пользователей в таблице dbo.AspNetUsers, как только кто-то добавляет их к опросу с их почтовым адресом, например:ASP.NET Identity, Зарегистрировать вручную добавил пользователя, не удаляя его
var user = new ApplicationUser
{
UserName = model.Email,
Email = model.Email,
TwoFactorEnabled = false,
EmailConfirmed = false,
Registered = true
};
_dbContext.ApplicationUsers.Add(user);
_dbContext.SaveChanges();
Если кто-то, кто был добавлен, как это в базу данных ранее, хочет зарегистрировать себя с помощью своего почтового адреса, я не хочу удалять добавленного вручную пользователя и регистрировать его как новый, потому что другие отношения уже связаны с его идентификатором, и ограничения не позволят этого. Я также не могу удалить связанные отношения, потому что к ним также относятся другие пользователи.
Я попытался вручную добавить hashedPassword к нему в базе данных, как это:
_dbContext.ApplicationUsers.FirstOrDefault(u => u.Email == model.Email).PasswordHash =
this.HashPassword(user, model.Password);
_dbContext.SaveChanges();
Но тогда Логин не удалось, из-за внутренней ошибки сервера, из-за значения NULL в «System.Security .Claims.Claim..ctor (String type, String value, String valueType, String issuer, String originalIssuer, ClaimsIdentity subject, String propertyKey, String propertyValue) ".
Кто-нибудь знает, как решить проблему регистрации пользователя, который уже был добавлен вручную, не удаляя его?
Спасибо за ответы!
EDIT/РЕШЕНИЕ
Вот решение:
В качестве первого шага, просто создать пользователя с паролем по умолчанию, а затем, если он хочет зарегистрировать, удалить пароль и добавить пароль от 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/en-us/library/dn613059 (V = vs.108) .aspx) для добавления/удаления/обновления записей в таблицах Identity ASP.NET. –