如何在登录ASP.net Identity之前验证用户的用户名和密码?

Moh*_*han 5 c# asp.net asp.net-membership

在我的ASP.Net应用程序中,想要在将用户登录到应用程序之前验证用户的用户名和密码.我正在使用ASP.net身份框架来成为会员.

想确定输入的用户名和密码是否存在.像这样的东西Membership.ValidateUser(username,password),在默认会员资格中使用,但不能与ASP.net Identity一起使用.试过这个,但没有运气?

var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();

var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>();

var user = manager.Find(userName,Password);
Run Code Online (Sandbox Code Playgroud)

小智 10

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);
Run Code Online (Sandbox Code Playgroud)


pud*_*lum 7

我用这样的东西:

public static bool ValidateUser(string Email, string Password)
    {
        var user = UserManager.FindByName(Email);
        return SignInManager.UserManager.CheckPassword(user, Password); 
    }
Run Code Online (Sandbox Code Playgroud)