ASPNET Core 2 - переопределить авторизацию на унаследованном контроллере - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть универсальный контроллер, который имеет атрибут Authorize, но его метод Get может быть доступен любому:

    [Route("api/[controller]")]
    [ApiController]
    [Authorize("Bearer")]
    public class BaseController<T> : ControllerBase where T : BaseModel
    {
        ...

        // GET: api/Base/5
        [HttpGet("{id}")]
        [AllowAnonymous]
        public virtual async Task<ActionResult<T>> Get(Guid id)
        {
            var item = await items.FirstOrDefaultAsync(i => i.Id == id && i.IsActive());

            if (item == null)
                return NotFound();

            return item;
        }
        ...
    }

И контроллер, который наследует вышеуказанный контроллер.Но на этом контроллере метод Get должен иметь контролируемый доступ.

    public class InheritController : BaseController<Item>
    {
        ...

        [Authorize("Bearer")]
        public override async Task<ActionResult<Item>> Get(Guid id)
        {
            return await base.Get(id);
        }
        ...
    }

Вышеуказанный подход не работает должным образом.При попытке авторизованного запроса ответ возвращается корректно.Но когда я пытаюсь выполнить неавторизованный запрос, я получаю ошибку 500 вместо 401.

Кто-нибудь может мне помочь, пожалуйста?

...