Owin在API登录时返回null(对象引用未设置为对象的实例)

时间:2018-08-15 08:40:29

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

我有一个用于验证用户身份的api控制器

public class UsersData : Controller
    {
        private ApplicationDbContext dbContext = new ApplicationDbContext();
        private readonly LoggingController logger = (LoggingController)LogManager.GetCurrentClassLogger(typeof(LoggingController));
        private ApplicationUserManager _userManager;


        public UsersData()
        {
            logger.ConfigureLogger();
            logger.SetApplicationName(ConfigurationManager.AppSettings["AppName"]);
        }

        public ApplicationUserManager UserManager
        {
            get
            {
                return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
            }
            private set
            {
                _userManager = value;
            }
        }

        public bool AuthenticateUser(LoginDTO Input)
        {
            var user = dbContext.Users.SingleOrDefault(u => u.UserName == Input.Email);
            var passwordHash = UserManager.PasswordHasher.HashPassword(Input.Password);
            if(passwordHash == user.PasswordHash)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

但是,当我通过邮递员访问http://localhost:9000/api/authentication?username=user@onae.com&password=1时,它返回此错误$exception {"Object reference not set to an instance of an object."} System.NullReferenceException

我做错什么了吗?看来问题出在返回null的UserManager中?但是我不确定该如何解决。

编辑

return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();

这一行是返回null的那一行。如何重新初始化用户管理器?我以为我已经做到了。

0 个答案:

没有答案
相关问题