【问题标题】:MVC Owin Identity 2 CheckPasswordAsync() will not executeMVC Owin Identity 2 CheckPasswordAsync() 不会执行
【发布时间】:2017-11-14 16:53:07
【问题描述】:

我有 2 个问题似乎彼此相关,stackoverflow 中的其他重复项都没有回答我的问题。

首先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));
            });
        }
    //...
    }

【问题讨论】:

  • 试试这个:await SignInManager.SignInAsync(model.UserName, true, true); 至少完成了吗?
  • 您是否仔细检查了用户名?
  • ApplicationUser signedUser = UserManager.FindByEmail(model.Email); 然后var result = await SignInManager.PasswordSignInAsync(signedUser.UserName, model.Password, model.RememberMe, shouldLockout: false);
  • @Codexer SignInAsync 确实完成但没有做任何事情。使用您的第二个解决方案,问题仍然存在。
  • 有趣,试试这个。 var user = await UserManager.FindAsync(model.UserName, model.Password); if (user != null) { await SignInAsync(user, model.RememberMe); }

标签: authentication asp.net-mvc-5 asp.net-identity owin


【解决方案1】:

试试这个。

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

【讨论】:

    猜你喜欢
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多