我在Winforms项目中使用AspNet.Identity。我已经通过传入的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();
}
答案 0 :(得分:0)
密码散列取决于app.config或web.config中的这些设置。
<li>
如果不存在,将使用框架machine.config中的设置。如果希望多个应用程序或部署使用同一数据库,则必须在这些部署中提供相同的值。
如果您已经拥有一个正在运行的aps.net实例,则应该将值从<system.web>
<machineKey decryption="" decryptionKey="" validation="" validationKey="" />
</system.web>
复制到Windows窗体的web.config
或Web服务器上的machine.config中。