2016-09-16 2 views
0

My backend Область администратора Я хочу ограничить людей в роли администратора. Я прочитал статью, в которой «Политики - это путь». Однако всякий раз, когда я добавляю атрибут, я просто перенаправляюсь на страницы AccessDenied.Политика администратора, не работающая с атрибутом Authorize

Я четко иметь роль

Вот DB enter image description here

StartUp.cs

 var defaultPolicy = new AuthorizationPolicyBuilder() 
      .RequireAuthenticatedUser() 
      .RequireRole("Administrator") 
      .Build(); 


     services.AddMvc(setup => 
     { 
      setup.Filters.Add(new AuthorizeFilter(defaultPolicy)); 
     }); 

Атрибут Определение

[Authorize("Administrator")] 
  • Итак, если у меня есть аутентификация и роль, почему я не могу никуда попасть?
  • Как вы называете политику, например Authorize («Администратор»). Я не уверен, откуда приходит «Администратор» (в статье также не было ясно).
+0

Даже если удалить весь материал, политики и просто пытаются проверить на основе Role Name (это наследие так?), Все равно сбрасывает меня к неавторизованная страница. [Авторизовать (Роли = «Администратор»)] –

ответ

0

Хорошо, должно быть, это была старая статья, или проверка роли прямо не работает. Однако синтаксис политики в документах работает как чемпион.

Startup

 services.AddMvc(); 

     services.AddAuthorization(options => 
     { 
      options.AddPolicy("RequireAdministratorRole", policy => policy.RequireRole("Administrator")); 
     }); 

Контроллер

[Authorize(Policy = "RequireAdministratorRole")] 
public class AdminDashboardController : Controller 
Смежные вопросы