【问题标题】:IdentityServer4 ConfigurationDbContext not loading client secretsIdentityServer4 ConfigurationDbContext 未加载客户端机密
【发布时间】:2018-06-18 13:31:21
【问题描述】:
我想在使用 EntityFramework 的 IdentityServer 项目中烘焙的 MVC 应用程序的管理员专用页面中显示客户端列表及其机密。
我目前在我的控制器中通过依赖注入引用了ConfigurationDbContext,并且可以访问客户端详细信息。但是,从上下文返回的每个客户端的 ClientSecrets 属性没有加载机密,并且设置为 null。如何强制上下文加载存储在另一个表中的 ClientSecrets?我应该这样做吗?
【问题讨论】:
标签:
entity-framework
identityserver4
eager-loading
【解决方案1】:
由于实体框架将客户端机密保存在单独的表中,您必须使用实体框架的扩展方法 - 包含。
public class ApplicatonsService : IApplicationsService
{
private readonly ConfigurationDbContext is4Context;
public ApplicatonsService(ConfigurationDbContext is4Context)
{
this.is4Context = is4Context;
}
public Task<List<Client>> GetApplicationsAsync()
{
return Task.FromResult(is4Context.Clients
.Include(c => c.ClientSecrets)
.Select(c => c.ToModel()).ToList());
}
...
}