【问题标题】:Problem with Identity UserManager error on password hashing密码哈希上的 Identity UserManager 错误问题
【发布时间】:2021-09-10 18:30:20
【问题描述】:

当我使用这段代码时:

   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;

结果将是错误的。

另一方面,由于不是由身份哈希系统生成的密码,我不能在用户登录时使用它,因为(可能和肯定)算法不同。

我的登录代码是:

 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");

        }

【问题讨论】:

  • 您想使用自己的密码哈希的原因是什么?
  • 你可能需要实现自己的IPasswordValidator
  • 我不需要手动做哈希密码。只是我这样做是为了测试以确保问题是否来自密码哈希或其他项目。

标签: asp.net-core model-view-controller asp.net-identity password-hash usermanager


【解决方案1】:

问题在专家朋友的帮助下得到解决。在自定义用户表时,我错误地添加了一个密码字段,我将其删除并解决了添加新用户的问题。 另外,post 动作被定义为 async,我删除了 async 并解决了登录问题。

【讨论】:

    猜你喜欢
    • 2013-11-26
    • 2016-09-16
    • 2015-09-02
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 2014-11-19
    • 2018-02-27
    • 1970-01-01
    相关资源
    最近更新 更多