У меня есть новый веб-API, созданный с помощью .net Core с настраиваемым фильтром авторизации. Мне нужно обойти этот фильтр для нескольких действий, но в остальном он требуется глобально. Как заставить MyAuthFilter учитывать атрибут [Microsoft.AspNetCore.Authorization] в методе UserController.Post?
Фильтр авторизации:
public class MyAuthFilter : IAuthorizationFilter {
public void OnAuthorization(AuthorizationFilterContext context) {
//do some auth
}
}
Глобальная регистрация Auth filter в Startup.cs:
public void ConfigureServices(IServiceCollection services) {
services.AddMvc(options => {
options.Filters.Add(new MyAuthFilter());
});
}
Оформление атрибутов на пользовательском контроллере:
[Route("api/[controller]")]
[Authorize] //only want anonymous on single action within controller
public class UserController {
[HttpPost("login")]
[AllowAnonymous] //this is not honored - MyAuthFilter.OnAuthorization is executed
public JObject Post([FromBody] JObject userLogin) {
}
}