mig*_*eia 4 c# asp.net-mvc asp.net-identity-2
我需要在asp.net MVC 5中实现的应用程序中使用Asp.Net Identity 2构建自定义用户密码检查.
我在stackoverflow帖子中写道(在Identity 2.1中编写自定义IUserPasswordStore和SignInManager.PasswordSignInAsync),我只需要覆盖UserManager中的CheckPasswordAsync方法.
我尝试在IdentityConfig.cs文件中覆盖此方法.以下是我添加到ApplicationUserManager类的代码,仅用于测试此解决方案:
public override async Task<bool> CheckPasswordAsync(ApplicationUser user, string password)
{
return await Task.Run(() => {
return true;
});
}
Run Code Online (Sandbox Code Playgroud)
问题是此代码永远不会在登录过程中运行,并且登录始终失败.要登录用户我正在使用SignInManager.PasswordSignInAsync登录用户,这是在asp.net MVC 5中创建新的Web应用程序时的默认设置.此方法不应该调用ApplicationUserManager.CheckPasswordAsync?或者这项工作还需要另一种配置吗?
它应该工作.我刚刚使用了标准的ASP.NET MVC模板,通过NuGet更新了所有涉及的库,它必须工作.
我想问题是你重写方法的方式.
在ApplicationUserManager尝试更改代码时,请执行以下操作:
public override Task<bool> CheckPasswordAsync(ApplicationUser user, string password)
{
return Task.FromResult<bool>(true);
}
Run Code Online (Sandbox Code Playgroud)
要么:
public override Task<bool> CheckPasswordAsync(ApplicationUser user, string password)
{
return Task.Run(() => MyCheckPasswordAsync());
}
private bool MyCheckPasswordAsync()
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
你会看到它通过:
问题是我试图使用系统中不存在的用户登录。
SignInManager.PasswordSignInAsync 永远不会调用 ApplicationUserManager。如果用户存储库中不存在,则检查PasswordAsync。
总之,我必须将用户存储在我的应用程序中或实现自定义用户存储机制。
| 归档时间: |
|
| 查看次数: |
10460 次 |
| 最近记录: |