IdentityServer4.Storage - не иметь претензионную модель - PullRequest
0 голосов
/ 10 октября 2018

Я использую приведенное ниже решение для создания Admin Management для Identity Server 4. https://github.com/IdentityServer/IdentityServer4.Storage/tree/2.3.0-preview1-update2 Но у меня есть некоторые проблемы, как показано ниже -

  1. Как использовать существующий DBcontext (ConfigurationDbContext) длядля миграции и использовать его для операции CURD.Что касается создания представления в ядре MVC, нам нужен класс Model.
  2. В приведенном выше решении у нас нет модели утверждений - тогда как создать таблицу в БД.Нужно ли нам создавать собственный DBcontext.
  3. Если мы собираемся использовать Asp.net Identity Core для управления пользователями, то какова будет связь претензии пользователя и претензии, присутствующей в ID4.
  4. Нужно ли нам создавать свою собственную БДв приведенном выше решении и выполните миграцию.

Пожалуйста, предложите некоторый учебник - я новичок в этом. Я зашел на официальный веб-сайт, но не нашел ничего, связанного с управлением администратора.Я сделал некоторый код для создания миграции, как показано ниже

 public class DbContextStorage : DbContext
{
    public DbContextStorage(DbContextOptions<DbContextStorage> options) : base(options)
    {

    }
    //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    //{
    //    optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["IdentityServerDatabase"].ConnectionString);
    //}
    public virtual DbSet<ApiResource> ApiResource { get; set; }
    public virtual DbSet<AuthorizationCode> AuthorizationCode { get; set; }
    public virtual DbSet<Client> Clients { get; set;  }
    public virtual DbSet<Consent> Consents { get; set; }
    public virtual DbSet<IdentityResource> IdentityResource { get; set; }

    public virtual DbSet<PersistedGrant> PersistedGrant { get; set; }

    public virtual DbSet<RefreshToken> RefreshToken { get; set; }
    public virtual DbSet<Resource> Resource { get; set; }
    public virtual DbSet<Resources> Resources { get; set; }
    public virtual DbSet<Scope> Scope { get; set; }

    public virtual DbSet<Secret> Secret { get; set; }

    public virtual DbSet<Token> Token { get; set; }

}

и получил исключение ниже:

Начальная установка-миграция

System.InvalidOperationException: No suitable constructor found for entity type 'Claim'. The following parameters could not be bound to properties of the entity: 'reader', 'reader', 'subject', 'type', 'value', 'type', 'value', 'valueType', 'type', 'value', 'valueType', 'issuer', 'type', 'value', 'valueType', 'issuer', 'originalIssuer', 'type', 'value', 'valueType', 'issuer', 'originalIssuer', 'subject', 'type', 'value', 'valueType', 'issuer', 'originalIssuer', 'subject', 'propertyKey', 'propertyValue', 'other', 'other', 'subject'.
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConstructorBindingConvention.Apply(InternalModelBuilder modelBuilder)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnModelBuilt(InternalModelBuilder modelBuilder)
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, IModelValidator validator)
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()
   at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
   at Microsoft.EntityFrameworkCore.Internal.InternalAccessorExtensions.GetService[TService](IInfrastructure`1 accessor)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func`1 factory)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__DisplayClass0_1.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
No suitable constructor found for entity type 'Claim'. The following parameters could not be bound to properties of the entity: 'reader', 'reader', 'subject', 'type', 'value', 'type', 'value', 'valueType', 'type', 'value', 'valueType', 'issuer', 'type', 'value', 'valueType', 'issuer', 'originalIssuer', 'type', 'value', 'valueType', 'issuer', 'originalIssuer', 'subject', 'type', 'value', 'valueType', 'issuer', 'originalIssuer', 'subject', 'propertyKey', 'propertyValue', 'other', 'other', 'subject'.

Я думаю, что не могунайдите правильное направление для создания модуля администратора для сервера удостоверений4.

1 Ответ

0 голосов
/ 11 октября 2018

IMO, вам нужно иметь клиентское приложение для администрирования, поэтому у вас есть два веб-приложения (idsrv, IdsrvManage), которые используют БД, здесь вы можете решить, где можно запустить миграцию, из Idsrv или из IdsrvManage.Посмотрите на этот репозиторий , чтобы дать вам несколько указаний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...