Я использую 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: "" }
Любая помощь приветствуется