How to validate username and password of user before log in in ASP.net Identity?

14,956

Solution 1

var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>();
var user = manager.FindByName(Email.Text);

//check for credentials before sign in ..    
var validCredentials = signinManager.UserManager.CheckPassword(user, Password.Text);
if (validCredentials)
{
    //sample code to run if user's credentials is valid and before login
    if(!manager.IsInRole(user.Id, "Administrators"))
    {
       FailureText.Text = "you need a higher permission level in order to login";
       return;
    }
}

//then sign in
var result = signinManager.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout: false);

Solution 2

I use something like this:

public static bool ValidateUser(string Email, string Password)
    {
        var user = UserManager.FindByName(Email);
        return SignInManager.UserManager.CheckPassword(user, Password); 
    }
Share:
14,956
Mohammed Faisal Khan
Author by

Mohammed Faisal Khan

Updated on June 03, 2022

Comments

  • Mohammed Faisal Khan
    Mohammed Faisal Khan almost 2 years

    In my ASP.Net application, want to validate username and password of users before logging them into the application. I am using ASP.net Identity framework for membership.

    Want to make sure whether the entered username and password exist or not. something like this one Membership.ValidateUser(username,password) which was used in default membership but can not be used with ASP.net Identity. Tried this one but no luck?

    var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
    
    var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>();
    
    var user = manager.Find(userName,Password);
    
  • aruno
    aruno over 5 years
    don't forget the await if you are using the async versions (which you probably should be)