I have this api controller that I use to authenticate my users
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;
}
}
}
However, when I access it via Postman at http://localhost:9000/api/authentication?username=user@onae.com&password=1, it returns this error $exception {"Object reference not set to an instance of an object."} System.NullReferenceException
Am I doing something wrong? It looks like the issue is in the UserManager that is returning null? But I'm not sure how I can fix this.
Edit
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
This line is the one that returns null. How do I reinitialise the user manager? I thought I did it already.