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



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

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

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

    public AccountController()
        : this(Startup.UserManagerFactory(), Startup.OAuthOptions.AccessTokenFormat)
    {
    }
    public AccountController(UserManager<AppUser> userManager,
        ISecureDataFormat<AuthenticationTicket> accessTokenFormat)
    {
        UserManager = userManager;
        AccessTokenFormat = accessTokenFormat;
    }

如何访问数据库上下文并根据添加到 AppUser 类的额外字段执行自己的查询?

UserManager 旨在与存储无关,如果您挂在构建 UserManager 时使用的用户存储本身,则可以下拉并访问 DbContext 本身的内容。

由于工厂创建了您的用户管理器,因此您可能需要对用户管理器进行子类化,以公开对默认情况下受保护的 IUserStore 的访问权限。 拥有存储后,您可以将其强制转换为UserStore并直接访问DbContext。

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

相关内容

  • 没有找到相关文章

最新更新