在尝试登录时,在使用帐户controller和密码之外创建用户



我在不使用accountController的情况下创建用户,在成功创建用户后,我去尝试与该用户的电子邮件和密码登录,并且它一直都在失败,并且我不知道为什么会失败,因为我正在使用相同的密码创建用户。

在不使用帐户controller的情况下创建用户时,我可能会做错什么吗?我还将新用户添加到Aspnetuser表

代码是

AspNetUser user = new AspNetUser();
user.UserName = ahl.AccountHolderName;
user.SecurityStamp = Guid.NewGuid().ToString();
user.PasswordHash = pHasher.HashPassword(ahl.AccountHolderPassword);
user.Email = ahl.AccountHolderEmail;
user.Id = Guid.NewGuid().ToString();
HWC.AspNetUsers.Add(user);
HWC.SaveChanges();

任何人都问为什么我只是不使用帐户控制器,因为我不想总是依靠该控制器。

编辑

这是登录

时正在调用的登录代码
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }
        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, change to shouldLockout: true
        var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
        switch (result)
        {
            case SignInStatus.Success:
                return RedirectToLocal(returnUrl);
            case SignInStatus.LockedOut:
                return View("Lockout");
            case SignInStatus.RequiresVerification:
                return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return View(model);
        }
    }

问题是,您一直在为用户名使用两个不同的值,并为新创建的用户使用电子邮件。

SignInManager.PasswordSignInAsync() check `userName` and `Password`, not `Email` and `Password` which you are passing in your code. 

创建用户时,将user.UserName = ahl.AccountHolderName;代码更改为user.UserName = ahl.AccountHolderEmail;,然后将其起作用。

相关内容

  • 没有找到相关文章

最新更新