ASP.Net Core 6 - авторизация ролей не работаетC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ASP.Net Core 6 - авторизация ролей не работает

Сообщение Anonymous »


Я прочитал бесчисленное количество руководств, статей и вопросов.

Я не могу понять, почему [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(); приложение.Выполнить(); За последние несколько месяцев я менял свой код бесчисленное количество раз, пытаясь заставить это работать, но теперь я просто умоляю о помощи. Это очень расстраивает! Что я пропустил? Может ли что-то еще в моем коде мешать правильной работе?

Спасибо!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»