Почему не получается использовать Identity и Cookie authentication одновременно?

102
26 сентября 2021, 12:40

Есть база данных с логинами и паролями, по которой авторизирую пользователей с помощью cookie. Но в ней есть не все пользователи. Я решил добавить в проект Identity, с помощью которой выдавать свои учетки для таких случаев. Вот чем проблема: после введения Identity авторизация по кукам перестала работать.

Я создал два отдельных проекта и убедился, что по отдельности эти механизмы работают, но совместно работает только Identity. Есть ли какой-нибудь способ совместить оба этих механизма?

Авторизация по кукам:

        private async Task Authentificate(User user) 
        {
            var claims = new List<Claim> 
            {
                new Claim(ClaimsIdentity.DefaultNameClaimType, user.Email),
                new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role?.Name),
                new Claim("company", user.Company.Name)
            };
            var id = new ClaimsIdentity(claims, "ApplicationCookie", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);
            await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(id));
        }

Код класса Startup (без строчек контекста):

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            services.AddIdentity<User, IdentityRole>(options =>)
                .AddEntityFrameworkStores<ApplicationDbContext>();
            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
                .AddCookie(options =>
                {
                    options.LoginPath = new Microsoft.AspNetCore.Http.PathString("/Account/Login");
                    options.AccessDeniedPath = new Microsoft.AspNetCore.Http.PathString("/Account/AccessDenied");
                });
        }
        public static void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseRouting();
            app.UseAuthentication();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
READ ALSO
EF6 MySQL EDM закрывается окно

EF6 MySQL EDM закрывается окно

Установил EF6, хочу создать модель на основе уже существующей базы данныхВыбивает EDM на моменте когда появляется окно с выбором версии EF6

127
Вывод большого количества срок в RichTextBox на WPF

Вывод большого количества срок в RichTextBox на WPF

Написал небольшое приложения которое читает логи по SHH с разных серверовСейчас все работает на WinForms, но я хотел бы перенести на WPF

170
Не создается , и не заполняется таблица __EFMigrationsHistory

Не создается , и не заполняется таблица __EFMigrationsHistory

Написал классы моделей, написал DBContext, попробовал сделать миграцию, вроде бы все получилось, однако, при выполнении миграции, или обновлении...

324
объединение запросов БД

объединение запросов БД

Подскажите как объединить два запроса в один, в нете подходящей инфы не нашел

134