使用 HotChocolate 从 UserManager 获取用户

问题描述

如何使用 UserManager

Microsoft.AspNetCore.Identity 获取来自 [ScopedService] 的用户列表

以下是我已经尝试过的:

using System.Linq;
using hostapp.Data;
using hostapp.Models;
using HotChocolate;
using HotChocolate.Data;
using Microsoft.AspNetCore.Identity;

namespace hostapp.GraphQL
{
    public class Query
    {
        // 1.
        [UseDbContext(typeof(DataContext))]
        public IQueryable<AppUser> Users([ScopedService] UserManager<AppUser> userManager)
        {
            return (IQueryable<AppUser>)userManager.Users;
        }
        
        // 2.
        [UseDbContext(typeof(DataContext))]
        public async Task<List<AppUser>> Users([ScopedService] UserManager<AppUser> userManager)
        {
            return await userManager.Users.ToListAsync();
        }

    }
}

输入:

query {
  users {
    emailConfirmed
  }
}

输出:

{
  "errors": [
    {
      "message": "Unexpected Execution Error","locations": [
        {
          "line": 2,"column": 3
        }
      ],"path": [
        "users"
      ]
    }
  ],"data": {
    "users": null
  }
}

解决方法

您不需要使用 [ScopedService] 而是使用 [Service] 您实际上甚至只需要在 [ScopedService]DBContext 结合使用的情况下使用 UseDbContext。 我们将在下一个版本中解决这个混淆

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...