gpt4 book ai didi

c# - 热巧克力认证连接用户

转载 作者:行者123 更新时间:2023-12-01 23:20:42 26 4
gpt4 key购买 nike

我的 GraphQL 查询类中有一个非常简单的 IQueryable。我想要完成的是获得请求聊天信息的授权用户。将 context.Chats 更改为 context.Chats.Where(i => i.UserId == RequestingId)。所以你不能从我的 API 获得私有(private)聊天。如果您未获得授权,那么您将始终收到一个空列表。我已经了解了如何使用 MVC Controller 执行此操作,但这不是所需的结果。

public class Query
{
[UseDbContext(typeof(AppDbContext))]
[UseFiltering]
[UseSorting]
public IQueryable<Chat> GetChats([ScopedService] AppDbContext context)
{
return context.Chats
.Include(m => m.Messages)
.Include(r => r.Recipients);
}
}

最佳答案

您可以像下面这样注入(inject)用户的 ClaimsPrincipal:

public IQueryable<Chat> GetChats([ScopedService] AppDbContext context,
[GlobalState(nameof(ClaimsPrincipal))] ClaimsPrincipal claimsPrincipal)
{
// ...
}

在即将发布的 v11.3.1 中,您还可以简单地编写:

public IQueryable<Chat> GetChats([ScopedService] AppDbContext context, 
ClaimsPrincipal claimsPrincipal)
{
// ...
}

您可以像这样访问经过身份验证的用户的 Id:

var userId = claimsPrincipal.FindFirstValue(ClaimTypes.NameIdentifier);

注意:根据您设置身份验证/授权机制的方式,声明可能会有所不同。

关于c# - 热巧克力认证连接用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68139292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com