usermanager.checkpasswordasync总是返回失败



我正在使用winforms项目使用aspnet.Identity。我通过传递的用户名to usermanager.findbynameasync成功地找到了用户,但是我无法登录以使用传递的密码。我可以使用相同的数据库和相同的凭据在我的MVC应用中登录正常。

这是我的代码:

public async Task<List<string>> VerifyUserNamePassword(string userName, string password)
    {
        var usermanager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new IdentityFrameworkDbContext()));
        var user = await usermanager.FindAsync(userName, password);
        //This is ALWAYS NULL!
        if (user != null) 
            label1.Text = "Success!";
        var u = await usermanager.FindByEmailAsync(userName);
        if (u != null)
        {
            //This works up to this point - check if password is correct
            var success = await usermanager.CheckPasswordAsync(u, password);
            //THIS IS ALWAYS FALSE!
            if (success)
                label1.Text = "YES THIS WORKED!";
        }            
        //This works, I get the Roles back and they are correct
        var users = await usermanager.GetRolesAsync(u.Id);
        return users.ToList();
    }

密码哈希取决于app.config或web.config中的这些设置。

<system.web>
  <machineKey decryption="" decryptionKey="" validation="" validationKey="" />
</system.web>

如果他们不存在框架计算机中的设置。如果您希望多个应用程序或部署使用相同的数据库,则必须在这些部署中提供相同的值。

查看您已经有一个运行的APS.NET实例,您应该将值从web.config复制到Windows表单的app.config或Web Server上的Machine.config。

相关内容

  • 没有找到相关文章