【问题标题】:Web API extending IdentityUser and custom queries扩展 IdentityUser 和自定义查询的 Web API
【发布时间】:2014-04-06 03:29:04
【问题描述】:

在 Web API 的 AccountController 中,我可以访问 UserManager,它提供了 GetUserById() 等方法。我需要根据我扩展的属性查询上下文并搜索用户列表 - 例如,我需要添加一个“GetUsersByPhoneNumber()”方法。

AppUser 是我的扩展类,继承了 IdentityUser。

我的构造函数看起来像这样。我在网上找到的任何示例都显示了与传入的上下文不同的内容。我看不到在哪里可以访问 dbcontext..

    public AccountController()
        : this(Startup.UserManagerFactory(), Startup.OAuthOptions.AccessTokenFormat)
    {
    }

    public AccountController(UserManager<AppUser> userManager,
        ISecureDataFormat<AuthenticationTicket> accessTokenFormat)
    {
        UserManager = userManager;
        AccessTokenFormat = accessTokenFormat;
    }

我如何才能访问 dbcontext 并根据我添加到 AppUser 类的额外字段执行我自己的查询?

【问题讨论】:

    标签: entity-framework asp.net-web-api ef-code-first asp.net-mvc-5 asp.net-identity


    【解决方案1】:

    UserManager 意味着与存储无关,如果您挂在构造 UserManager 的 UserStore 本身上,您可以从 DbContext 本身下拉并访问东西。

    由于工厂创建了您的用户管理器,您可能需要继承 UserManager 以公开访问默认受保护的 IUserStore。拥有商店后,您可以将其转换为 UserStore 并直接获取 DbContext。

    另一种可能更简洁的方法是扩展 UserManager 并从 UserManager 本身公开一个新的 GetUsersByPhoneNumber(),因为它已经可以访问您需要的所有内容

    【讨论】:

      猜你喜欢
      • 2019-06-29
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      相关资源
      最近更新 更多