Есть база данных с логинами и паролями, по которой авторизирую пользователей с помощью 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?}");
});
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости