【发布时间】:2016-02-22 03:43:45
【问题描述】:
我被要求提供通过 UI 无密码创建用户的能力。我正在尝试使用 ASP.NET Identity 来完成此任务。
我可以使用UserManager 的Create 方法成功地创建一个没有密码的用户:
if (vm.ShouldHavePassword)
{
userManager.Create(userToInsert, vm.Password);
}
else
{
userManager.Create(userToInsert);
}
调用Create 方法后,测试用户成功保存到我们的AspNetUsers 表中。当我不提供密码时,AspNetUsers 表中的PasswordHash 列设置为NULL。
我的问题是,我无法以没有密码的测试用户身份登录。以下是我们用来验证用户凭据的方法调用:
result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
我尝试以具有NULLPasswordHash 多次的测试用户身份登录。为此,我没有在我们的登录表单中提供密码。结果,NULL 密码被传递到PasswordSignInAsync 方法。此方法调用的返回值始终为SignInStatus.Failure。
使用 ASP.NET Identity,当凭据包含NULL 密码并且数据库中的用户包含NULL PasswordHash 时,如何配置我的代码以正确验证用户凭据?这样的事情甚至可能吗?
【问题讨论】:
-
可能的重复和/或解决方案stackoverflow.com/questions/28110934/…
-
我已经看过这个问题了。他要问的是我如何以 any 用户身份登录而无需提供密码。我要问的是如何以没有密码保存在数据库中的特定用户身份登录。
-
明白。您是否尝试过他发布的代码? FindByNameAsync 和 SignInAsync?
-
我当然可以使用该代码,但我必须提供一些逻辑来验证数据库中此特定用户的密码是否首先设置为 NULL,否则我将能够以任何用户身份登录而无需提供密码。而且我不想提供这种逻辑,因为 SignInManager 已经为我处理好了。
标签: asp.net asp.net-identity-2