【发布时间】:2015-10-12 02:09:17
【问题描述】:
我需要在 asp.net MVC 5 中实现并使用 Asp.Net Identity 2 的应用程序中构建自定义用户密码检查。
我在 stackoverflow 帖子 (Writing a custom IUserPasswordStore and SignInManager.PasswordSignInAsync in Identity 2.1) 中读到,我只需要覆盖 UserManager 中的 CheckPasswordAsync 方法。
我尝试在 IdentityConfig.cs 文件中覆盖此方法。这是我添加到 ApplicationUserManager 类的代码,只是为了测试这个解决方案:
public override async Task<bool> CheckPasswordAsync(ApplicationUser user, string password)
{
return await Task.Run(() => {
return true;
});
}
问题是这段代码在登录过程中从来没有运行过,登录总是失败。要登录用户,我使用 SignInManager.PasswordSignInAsync 登录用户,这是在 asp.net MVC 5 中创建新 Web 应用程序时的默认设置。此方法不应该调用 ApplicationUserManager。 CheckPasswordAsync?或者这项工作需要其他配置?
【问题讨论】:
-
您是否按照Introduction to ASP.NET Identity 指南触发身份验证过程?如果没有,你是怎么做到的?你需要在你的问题中解释它。
-
我真的没有遵循任何配置过程。我刚刚创建了一个空的 Web 应用程序并尝试更改检查密码过程。我会按照你的建议来看看我的自定义检查密码是否有效。
-
@Albireo 我阅读了 ASP.NET 身份简介指南,我了解到我可以更改登录控制器以使用我的自定义用户检查密码方法。但我的问题仍然存在。如果我覆盖 ApplicationUserManager.CheckPasswordAsync 它不应该在我调用 SignInManager.PasswordSignInAsync 方法时被调用?
-
我的问题只是试图缩小你的情况:其他地方可能有一些缺失或错误(如LeftyX said,它应该工作),但没有看到整个代码很难分辨。
-
您是在用户显式访问页面时手动调用该方法,还是使用 OWIN 来处理点击Authorize'd 操作的未经身份验证的用户?
标签: c# asp.net-mvc asp.net-identity-2