ASP.NET Core 2.0 Identity с настройкой пользовательских таблиц - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь создать функцию аутентификации, используя Identity Core 2.0 с моими собственными пользовательскими таблицами и EF Core 2.0.

Я использую это для справки: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-custom-storage-providers?view=aspnetcore-2.1.

Дело в том, что я не использую ни роли, ни утверждения, поэтому у меня есть одна таблица / DbSet, содержащая информацию о пользователе. Я реализовал необходимые интерфейсы, и все выглядит хорошо. Я также использую аутентификацию JWT. Проблема в том, что я не уверен, как настроить службы при запуске. Вот мой текущий код:

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true,

                ValidIssuer = Configuration["JwtIssuer"],
                ValidAudience = Configuration["JwtAudience"],
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtKey"]))
            };
        });

    services.AddDbContext<MyDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));           

    services.AddIdentity<User, IdentityRole>()
        //.AddEntityFrameworkStores<MyDbContext>()
        .AddDefaultTokenProviders();

    services.AddTransient<IUserRepository, UserRepository>();
    services.AddTransient<IUserStore<User>, UserStore>();
    services.AddTransient<IEmailSender, EmailSender>();

    services.AddMvc();
}

где User - моя пользовательская реализация пользовательского класса. То же самое касается UserStore.

Однако я не уверен, как настроить конкретные службы идентификации. Я должен вызывать services.AddIdentity, но для этого требуется параметр типа TRole, который я не реализую, и нет никаких изменений без предоставления типа роли. Я должен либо реализовать пустышку / использовать IdentityRole, либо мне нужно извлечь содержимое метода расширения и добавить их вручную, что не кажется мне хорошей идеей. Кроме того, он добавляет Cookie Auth по умолчанию, поэтому он не будет сокращать его для меня. Вот тело метода расширения, который я нашел: Идентификатор ASP.NET Ref-1 / Идентификатор ASP.NET Ref-2 .

Как мне зарегистрировать услуги? Кроме того, я пропускаю что-то еще в конфигурации в целом, учитывая обстоятельства (JWT, Идентичность с пользовательскими таблицами).

...