Настроить неверное сообщение - PullRequest
0 голосов
/ 24 февраля 2020

Я использую asp. net web api2 c#. Мне нужно реализовать аутентификацию токена с помощью owin. Я реализовал токен authentication.it работает как положено.

Мне нужно настроить ошибку из Owin OAuthAuthorizationServerProvider Когда отправляется недопустимый запрос, я получаю следующую ошибку.

{"error":"invalid_grant"}

Мне нужно добавить пользовательских свойств Статус, Пользовательское сообщение об ошибке, Код состояния

, например:

{"error":"invalid_grant" , "Status" :xx ,"Message" :"test" ,Status code: "" }.

Но я не могу добавить пользовательские свойства.

Я пробовал

1) DelegatingHandler 2) Атрибут CustomAuthorization 3) Реализовал мое собственное промежуточное ПО.

, но ни один из них не работает. Любая помощь приветствуется

Ниже код, который я уже пробовал, но не работает

  public class MessageHandler1 : DelegatingHandler
    {
        protected override Task<HttpResponseMessage> SendAsync(
    HttpRequestMessage request, CancellationToken cancellationToken)
        {

            // Call the inner handler.
            var response = base.SendAsync(request, cancellationToken);


            if (response.Result.StatusCode == HttpStatusCode.NotFound)
            {
                //Create new HttpResponseMessage message
            }
            ;
            return response;
        }
    }


    public class MyMiddleware : OwinMiddleware
    {
        public MyMiddleware(OwinMiddleware next) : base(next) { }

        public override async Task Invoke(IOwinContext context)
        {
            await Next.Invoke(context);
            if (context.Response.StatusCode == 404)
            {
                context.Response.StatusCode = 403;
                context.Response.ReasonPhrase = "Blah";
            }
            if (context.Response.StatusCode == 400)
            {
                context.Response.ContentType = "application/json";
                context.Response.StatusCode = 400;
                context.Response.ReasonPhrase = "Blah";

                var wapper = new
                {
                    query = "aaaa"

                };
                context.Response.Write(JsonConvert.SerializeObject(wapper));
                return;
            }
        }
    }

Я получаю вывод, как показано ниже выводится как

 {"error":"invalid_grant"  , "Status" :xx ,"Message" :"test" ,Status code: "" }

Любая помощь приветствуется

...