当我使用这个代码时:
var passwordHasher = new PasswordHasher();
string hashedPassword = passwordHasher.HashPassword(pp.Password);
User newUser = new User()
{
UserName = pp.NationalCode,
Pcode = pp.Pcode,
PasswordHash = hashedPassword,
};
var result = _UserManager.CreateAsync(newUser).Result;
结果会成功,但如果我使用以下代码
User newUser = new User()
{
UserName = pp.NationalCode,
Pcode = pp.Pcode,
};
var result = _UserManager.CreateAsync(newUser,pp.Pasword).Result;
结果将为false。
另一方面,由于Identity Hash没有系统生成密码,我无法在用户登录时使用它,因为(可能也是肯定的(算法不同。
我在登录中的代码是:
if (ModelState.IsValid)
{
var user = _UserManager.FindByNameAsync(lc.UserName).Result;
_SignInManager.SignOutAsync();
if (user != null)
{
var result =await _SignInManager.PasswordSignInAsync(user,lc.Password, lc.IsPersistent, false);
if (result.Succeeded)
{
TempData["LoggedUserCode"] = user.Pcode;
return RedirectToAction("Index", "Home");
}
}
ModelState.AddModelError("", "Invalid User or Password");
}
这个问题在一位专家朋友的帮助下得到了解决。在自定义用户表时,我错误地添加了一个密码字段,我删除了它,添加新用户的问题就解决了。此外,post操作被定义为async,我删除了async,登录问题得到了解决。