Asp.net UserManager和IUserStore - 检索用户所需的用户名和密码

时间:2013-10-27 16:19:47

标签: asp.net .net asp.net-mvc asp.net-mvc-5 asp.net-identity

我发现自己需要一起提供用户名和密码,以便通过UserManager从我的自定义IUserStore中检索用户帐户。不幸的是,似乎没有任何支持。我在UserManager中看到的用户名/密码的唯一方法是Task<TUser> FindAsync(string userName, string password),它在内部调用Task<TUser> this.Store.FindByNameAsync(userName),然后通过调用this.VerifyPassword(passwordStore, tUser, password))验证密码(感谢ILSpy)。

我无法单独根据用户名获取用户密码。只有在同一个呼叫中提供用户名和密码,验证才能成功。我最终对UserManager进行了子类化并添加了我自己的方法TUser FindUserAndPassword(string userName, string password),它只调用我的自定义商店api提供用户名和密码(我也可以覆盖FindUser(string UserName, string password)而不是添加新方法)。

即使这有效,但我很惊讶新的Identity框架不支持开箱即用的这一要求。也许我没有看到什么。有什么见解吗?

1 个答案:

答案 0 :(得分:0)

核心框架不需要密码来查找用户,期望您应该能够通过其密钥(ID / UserName)查找用户。但是,如果这是您的应用程序的要求,那么您目前正在做的事情(扩展UserManager并添加您自己的API)是您添加自己的功能的预期方式。