SignInManager.PasswordSignInAsync保持返回空对象引用的状态

问题描述 投票:2回答:1

在我的控制器中,我使用模型来正常登录这些工作,并且该模型为我提供了正确的数据当我登录帐户时,给我空对象引用

这些是我的模特

    public class LoginViewModel
    {
        [Required]
        //[Display(Name = "Email")]

        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [Display(Name = "Remember me?")]
        public bool RememberMe { get; set; }
    }

以及我在这里的动作

public ApplicationSignInManager SignInManager { 
   get { return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>(); 
   } 
   private set { _signInManager = value; } 
}

public async Task<ActionResult> LoginUser(LoginViewModel model, string returnUrl)
       {
           if (!ModelState.IsValid)
           {
               return View(model);
           }
           var user = UserManager.FindByName(model.UserName);

           var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
           switch (result)
           {
               case SignInStatus.Success:
                   return RedirectToLocal(returnUrl);
               case SignInStatus.LockedOut:
                   return View("Lockout");
               case SignInStatus.Failure:
               default:
                   ModelState.AddModelError("", "Invalid login attempt.");
                   return View(model);
           }
       }

and here the error in the browser

c# asp.net asp.net-mvc asp.net-core asp.net-web-api
1个回答
0
投票
因为以下行有效

var user = UserManager.FindByName(model.UserName);

然后,这意味着SignInManager未在控制器中初始化。 

var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);

如果您共享SignInManager的初始化代码,我们可以为您提供更多帮助。
© www.soinside.com 2019 - 2024. All rights reserved.