Если нет авторизации, всегда возвращайте 401 - PullRequest
0 голосов
/ 29 августа 2018

Когда нет авторизации, я хочу всегда возвращать 401, в настоящее время это происходит только тогда, когда я иду по пути, который существует. Как сделать так, чтобы при переходе на несуществующий путь он также возвращал 401.

Примечание. В настоящее время я использую только 1 пользовательский обработчик аутентификации, который реализует AuthenticationHandler<T>.

public void ConfigureServices (IServiceCollection services)
 {
     services
         .AddMvc (options =>
         {
             var policy = new AuthorizationPolicyBuilder ().RequireAuthenticatedUser ().Build ();
             options.Filters.Add (new AuthorizeFilter (policy));
         })
         .SetCompatibilityVersion (CompatibilityVersion.Version_2_1);

     services
         .AddAuthentication (options =>
         {
             options.DefaultAuthenticateScheme = CustomAuthenticationHandler.AuthenticationScheme;
             options.DefaultChallengeScheme = CustomAuthenticationHandler.AuthenticationScheme;
         })
         .AddScheme<TicketAuthenticationOptions, CustomAuthenticationHandler> (CustomAuthenticationHandler.AuthenticationScheme, null);
 }

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

1 Ответ

0 голосов
/ 29 августа 2018

Если вас просто интересует, является ли пользователь аутентифицированным , вы можете добавить пользовательское промежуточное ПО в конвейер, который преобразует 404 в 401. Вот простой пример:

public void Configure(IApplicationBuilder app)
{
    app.UseAuthentication();

    app.Use(async (ctx, next) =>
    {
        await next();

        if (ctx.Response.StatusCode == 404 && !ctx.User.Identity.IsAuthenticated)
            ctx.Response.StatusCode = 401;
    });

    app.UseMvc();
}

Пользовательское промежуточное ПО располагается перед промежуточным ПО MVC, ожидает , чтобы запустилось, а затем преобразует 404 в 401, если пользователь не прошел аутентификацию.

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