ASP.NET身份,注册手册添加用户而不删除他

时间:2016-01-15 16:34:23

标签: c# asp.net asp.net-mvc asp.net-identity

我遇到ASP.NET身份问题。在我的应用程序中,我想将用户添加到表dbo.AspNetUsers中,只要有人将其添加到带有邮件地址的民意调查中,就像这样:

var user = new ApplicationUser
            {
                UserName = model.Email,
                Email = model.Email,
                TwoFactorEnabled = false,
                EmailConfirmed = false,
                Registered = true
             };
 _dbContext.ApplicationUsers.Add(user);
 _dbContext.SaveChanges();

如果之前有人这样添加到数据库中,想要使用他的mailadress注册自己,我不想删除手动添加的用户并将其注册为新用户,因为其他关系已经相关他的身份证和限制不允许这样做。我也无法删除已连接的关系,因为其他用户也与它们相关。

我尝试在数据库中手动添加一个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)"。

是否有人知道注册用户的解决方案,该用户已经手动添加而未删除他?

感谢您的回答!

修改/溶液

以下是解决方案:

在第一步中,只需使用默认密码创建用户,然后如果他想注册,请删除密码并从RegisterModel添加密码,如下所示:

var result = await _userManager.CreateAsync(user, "DefaultPassword1.");
await _userManager.RemovePasswordAsync(user);
var result = await _userManager.AddPasswordAsync(user, model.Password);

1 个答案:

答案 0 :(得分:2)

如果查看Manage控制器,您将看到管理用户帐户的所有方法。例如,添加您要使用的密码

var result = await UserManager.AddPasswordAsync(User.Identity.GetUserId(), model.NewPassword);