Промежуточное программное обеспечение Asp.Net Core MVC возвращает 404 вместо 401 даже с AuthorizeFilter - PullRequest
1 голос
/ 29 октября 2019

У меня есть очень простое приложение веб-API, которое настроено так:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseAuthentication();
    app.UseMvc();
}

Службы имеют регистрацию MVC следующим образом:

_services
    .AddMvc(config =>
    {
        var policy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .Build();
        config.Filters.Add(new AuthorizeFilter(policy));
    })

Для root не зарегистрирован маршрут по умолчаниюпоэтому, когда я делаю запрос к корню приложения, я получаю 404. Я ожидал получить 401, хотя я думал, что абсолютно все запросы должны требовать авторизации.

Я не нашел пути кдостичь этого, и даже не уверен, что это семантически правильно, но в моем API нет открытых конечных точек, и я хотел бы просто вернуть 401, если нет аутентификации для какого-либо маршрута.

1 Ответ

0 голосов
/ 29 октября 2019

ASP.NET использует 401 для внутреннего использования, вы всегда получите 404, вы можете справиться с этим, используя

AddAuthentification() Расширение в вашем сервисном сборщике

   services.AddAuthentication(options =>
        {
            options.DefaultScheme = "Cookies";
        }).AddCookie("Cookies",
          (options) =>
          {
              options.AccessDeniedPath = "..your access denied page route..";
              options.LoginPath ="..your login route.."
          })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...