ASP.NET Core 2 - проверка подлинности с несколькими требованиями ИЛИ для каждой области

У меня есть политика, позволяющая пользователям определенных типов загружать документы, скажем, UserA и UserB

    [HttpPost]
    [Authorize(Policy = Policy.Upload)]
    public async Task<IActionResult> Upload([FromBody] DocumentUploadRequest request)

и в моей настройке я делаю:

        services.AddSingleton<IAuthorizationHandler, UserAHandler>();
        services.AddSingleton<IAuthorizationHandler, UserBHandler>();

        services.AddAuthorization(options =>
        {
            options.AddPolicy(Policy.Upload, policy => policy
                .RequireScope("scope", Scope.UserA)
                .Requirements
                .Add(new UserARequirement()));

            options.AddPolicy(Policy.Upload, policy => policy
                .RequireScope("scope", Scope.UserB)
                .Requirements
                .Add(new UserBRequirement()));
        });

Это не работает, потому что когда я вызываю обработчик с помощью Scope "UserA", он запускает UserBHandler и завершается ошибкой, потому что UserA не удовлетворяет требованиям UserB.

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

Есть идеи?

0 ответов

Другие вопросы по тегам