Я прочитал бесчисленное количество руководств, статей и вопросов.
Я не могу понять, почему [Authorize(Roles = "SuperAdmin")] или любая другая роль не работает. Ошибку 403 получают все, независимо от указанной роли:
//[Authorize(Roles = "SuperAdmin")] — закомментировано для отладки ролей общедоступная асинхронная задача Index() { вар userID = User.FindFirstValue(ClaimTypes.NameIdentifier); вар пользователь = ждут _userManager.FindByIdAsync (userID); вар роли = ждут _userManager.GetRolesAsync(пользователь); вернуть просмотр(); } Когда я отлаживаю пользователя, я вижу, что у него есть роль:

Но они по-прежнему получают ошибку 403 на любом контроллере, который авторизует роли.
Вот соответствующие фрагменты моей программы.cs:
builder.Services.AddIdentity(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores() .AddClaimsPrincipalFactory() .AddRoleManager() .AddTokenProvider(TokenOptions.DefaultProvider); builder.Services.ConfigureApplicationCookie(параметры => { options.AccessDeniedPath = новый PathString("/Home/HandleError/401"); options.LoginPath = новый PathString("/Home/Portal"); }); builder.Services.AddAutoMapper(typeof(Program)); builder.Services.AddControllersWithViews(); builder.Services.AddDatabaseDeveloperPageExceptionFilter(); builder.Services.AddControllers().AddNewtonsoftJson(options => { options.SerializerSettings.ContractResolver = новый DefaultContractResolver(); }); builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.Configure(builder.Configuration); builder.Services.AddMvc(параметры => { политика вар = новый AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Строить(); options.Filters.Add(новый AuthorizeFilter(policy)); }); вар приложение = builder.Build(); app.UseStatusCodePagesWithReExecute("/Home/HandleError/{0}"); приложение.UseHsts(); используя (varscope = app.Services.CreateScope()) { вар услуги = объем.ServiceProvider; var context = Services.GetRequiredService(); context.Database.EnsureCreated(); } app.UseHttpsRedirection(); приложение.UseStaticFiles(); приложение.UseRouting(); приложение.UseAuthentication(); приложение.UseAuthorization(); приложение.MapControllerRoute( имя: «по умолчанию», шаблон: "{controller=Home}/{action=Index}/{id?}"); приложение.MapRazorPages(); приложение.Выполнить(); За последние несколько месяцев я менял свой код бесчисленное количество раз, пытаясь заставить это работать, но теперь я просто умоляю о помощи. Это очень расстраивает! Что я пропустил? Может ли что-то еще в моем коде мешать правильной работе?
Спасибо!