gpt4 book ai didi

c# - IdentityServer 4,为 CRUD 客户端创建面板

转载 作者:行者123 更新时间:2023-11-30 13:35:42 25 4
gpt4 key购买 nike

目前我已将 Identityserver4 配置为单独的项目 + 我的 WebAPI 并存储在 IdentityServer 的数据库凭据中。

现在我有问题如何使 CRUD(在我的前端 API 中)到 IdentityServer(我想从我的 API 将客户端添加到 IdentityServer)

如何制作属性(property)?

最佳答案

来自 IdentityServer4.EntityFramework IdentityServer4.EntityFramework.Storage ,您可以访问 IConfigurationDbContext (一旦您使用例如 ConfigureServices AddConfigurationStore 中添加了所需的服务)。因为它被注册为依赖注入(inject)系统的一部分,所以您可以在您的一个 Controller 中依赖它。例如:

public class ClientsController : ControllerBase
{
private readonly IConfigurationDbContext _configurationDbContext;

public ClientsController(IConfigurationDbContext configurationDbContext)
{
_configurationDbContext = configurationDbContext;
}

// ...
}

IConfigurationDbContext是标准的抽象 DbContext , 与以下 DbSet<T>属性:

  • Clients
  • IdentityResources
  • ApiResources

它还包括 SaveChangesSaveChangesAsync - 人们对 DbContext 的一切期望.由于所有这些,您可以像任何其他 Entity Framework Core 驱动的数据库一样对这些实体中的每一个进行 CRUD。

最后要注意的是 Models (在 IdentityServer4.Storage 中)和 Entities (在 IdentityServer4.EntityFramework.Storage 中)。还有一些扩展方法用于在它们之间进行映射(例如 ClientMappers.ToEntity )。

鉴于所有这些,您可以创建一个 Model在你的 Controller 内部(或者可能比直接在那里更好封装的地方)。这是创建新 Client 的基本示例:

var clientModel = new Client
{
ClientId = "",
ClientName = "",
// ...
};

_configurationDbContext.Clients.Add(clientModel.ToEntity());

await _configurationDbContext.SaveChangesAsync();

Client这里的类来自IdentityServer4.Models然后转换为 Entity使用 ToEntity我在上面暗示的扩展方法。使用 Model并转换为 Entity比试图操纵 Entity 更简单直接 - 如果您有兴趣,可以查看 mapping这发生在这里。

这对 ApiResources 的工作方式相同, IdentityResources等。如果您想了解有关这些内容的更多信息,请使用我提供的源代码链接,但我在此处提供的信息应该已涵盖。

为了使用IdentityServer4IdentityServer4.EntityFramework在您的 API 项目中,您可以将这两个引用添加到您的 API 项目中。之后,你可以用同样的方式配置DI(使用AddIdentityServer中的ConfigureServices),但你不需要添加中间件(使用UseIdentityServer中的Configure)。你甚至可以只使用 AddIdentityServer().AddConfigurationStore(...)设置相关服务,因为您不需要签名 key 等。

关于c# - IdentityServer 4,为 CRUD 客户端创建面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47437608/

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