Обработчик авторизации - PullRequest
0 голосов
/ 07 мая 2018

Я создал простой AuthorizationHandler, как показано ниже:

public class IdentityHandler<TRole> : AuthorizationHandler<IdentityRequirement<TRole>>, ITokenValidator
        where TRole : Role
{
    protected AuthorizationHandlerContext AuthContext { get; private set; }              

    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, PcIdentityRequirement<TRole> requirement)
    {
        AuthContext = context;
        //some checking
        //if no reuqiremnets then call ThrowUnathorizedException()
        context.Succeed(requirement);
        return Task.CompletedTask;
    }

    public virtual Task ThrowUnathorizedException(string message)
    {
        AuthContext.Fail();
        return Task.CompletedTask;
    }
}

и требования, как указано ниже:

public class IdentityRequirement<TRole> : IAuthorizationRequirement
        where TRole : Role
{
    public TRole Role { get; }

    public PcIdentityRequirement()
    {
        Role = Activator.CreateInstance<TRole>();
    }
}

Я также добавил обработчики в Startupfile

AddAuthorization(options => options.AddPolicy(name, policy => policy.Requirements.Add(requirement)));

При успешном выполнении требований все работает нормально. Однако, когда я не устанавливаю context.Succeed (req) в HandleRequirementAsync, он возвращает 500 и сообщение:

Не указана схема аутентификации, и не было DefaultChallengeScheme найден.

Что мне там делать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...