【问题标题】:Asp.net UserManager and IUserStore - username and password both required to retrieve userAsp.net UserManager 和 IUserStore - 检索用户都需要用户名和密码
【发布时间】:2013-11-06 08:54:15
【问题描述】:

我发现自己需要同时提供用户名和密码才能通过 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) 而不是添加新方法)。

尽管这可行,但我真的很惊讶新的身份框架不支持开箱即用的这一要求。也许我什么都没看到。有什么见解吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 2014-04-02
      • 2015-06-03
      • 2020-07-26
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多