4

получила помощь из этой статьи:притязания на основе авторизации для нескольких претензий в Asp.net Основного

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies

Я пытался создать некоторые политики за свои действия, но в некоторых действиях я хочу иметь несколько политик и если пользователь имеет либо из них, они могут иметь доступ к действиям контроллера:

[Authorize(Policy = "CanAccessMenu1")] 
    [Authorize(Policy = "CanAccessMenu2")] 
public async Task<IActionResult> ActionFroMultiplePolicies([FromBody] ActionRequest request) 
     { 
//.............. 
} 

как я могу объединить эту политику? могу ли я использовать что-то вроде этого?

[Авторизоваться (Policy = "CanAccessMenu1, CanAccessMenu2")]

В этом случае, может быть, мне нужно иметь некоторые изменения в этом переопределения функций. Но я не имею ни малейшего представления о том, что:

Protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, CanAccessRequirement requirement) 
     { 
     } 

Спасибо за любую помощь

ответ

0

не так, как вы хотите; политика должна быть кумулятивной. Например, если вы используете два отдельных атрибута, они должны оба пройти.

Вы должны оценить условия ИЛИ в рамках единой политики. Но вам не нужно указывать его как OR в одном обработчике. У вас может быть требование, которое имеет более одного обработчика. Если какой-либо из обработчиков успешно выполняет флаг, то требование выполняется. См. Шаг 6 в файле blowdart Authoriation Workshop.