Web API扩展了IdentityUser和自定义查询

时间:2014-03-04 14:24:51

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

在我的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;
    }

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

1 个答案:

答案 0 :(得分:0)

UserManager意味着与商店无关,如果您挂在构建UserManager的UserStore本身上,您可以从DbContext本身下载和访问内容。

由于工厂创建了您的用户管理器,您可能需要将UserManager子类化以公开地公开对默认受保护的IUserStore的访问。拥有商店后,您可以将其投射到UserStore并直接获取DbContext。

另一种可能更干净的方法是扩展UserManager并从UserManager本身公开一个新的GetUsersByPhoneNumber(),因为它已经可以访问你需要的一切