2017-06-13 65 views
0

我有两个问题似乎是相互关联,并没有其他重复在stackoverflow是我的问题的答案。MVC Owin Identity 2 CheckPasswordAsync()将不会执行

首先PasswordSignInAsync方法执行它永远不会停止或抛出任何异常,它只是继续执行:通过调用接收的用户名和密码登录网络服务

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

我想验证用户并返回用户信息,所以我覆盖checkPasswordAsync方法,但它永远不会执行:

public class ApplicationUserManager : UserManager<ApplicationUser> 
    { 
     //... 

     public override async Task<bool> CheckPasswordAsync(ApplicationUser user, string password) 
     { 
      return await Task.Run(() => 
      { 
       return (checkUsernameAndPassword(user.username,password)); 
      }); 
     } 
    //... 
    } 
+0

试试这个:'等待SignInManager.SignInAsync(model.UserName,true,true);'它至少完成了吗? – Codexer

+0

你是否对用户名进行了双重检查? – Codexer

+0

'ApplicationUser signedUser = UserManager.FindByEmail(model.Email);'然后'var result = await SignInManager.PasswordSignInAsync(signedUser.UserName,model.Password,model.RememberMe,shouldLockout:false);' – Codexer

回答

0

试试看。

ApplicationUser signedUser = UserManager.FindByEmail(model.Email); 
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);