Я хочу использовать AuthorizeAttribute
для своих методов Web API.Но когда пользователь не авторизован, метод возвращает Login-View вместо простого кода 401-статуса.
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
// Another code.
services.AddDefaultIdentity<User>(opt => {})
.AddEntityFrameworkStores<MyDbContext>();
// Another code.
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// Another code.
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "api/{controller}/{action=Index}/{id?}");
});
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
// Another code.
}
SimpleController.cs:
[Route("api/[controller]")]
public class SimpleController : Controller
{
[Authorize]
[HttpGet("{id}")]
public int Index(int Id)
{
return Id;
}
}
В ASP.NET MVC 5 у нас есть оба AuthorizeAttribute
:
System.Web.Http.AuthorizeAttribute
- который используется для веб-API. System.Web.Mvc.AuthorizeAttribute
- который используется для контроллеровс представлениями.
Но ASP.NET Core 2.0 имеет только один вид атрибута - для контроллеров с представлениями.Что мне нужно сделать, чтобы получить коды состояния (401, 403) вместо просмотров?