2017-02-21 13 views
2

Мне нужно доставить пользовательское «несанкционированное» сообщение на разных языках, вместо стандартного «Авторизация была отклонена для этого запроса». Я использую Owin в качестве аутентификации и атрибут [Authorize] для ApiControllers/methods. Я знаю, что это можно сделать с помощью настраиваемого фильтра авторизации, но, похоже, ситуация с избыточным количеством просто изменила сообщение, отправленное клиенту.Пользовательское [Авторизованное] сообщение на 401

Есть ли более простой способ изменения сообщения или я должен придерживаться настраиваемого фильтра авторизации?

Thanks

ответ

2

К сожалению, это невозможно.

На основе source code одним из вариантов является создание нового настраиваемого атрибута Authorize, наследующего от AuthorizeAttribute. Затем вам нужно будет только переопределить метод HandleUnauthorizedRequest и заменить его на свой. Остальные методы будут по-прежнему обрабатываться базой AuthorizeAttribute

public class MyCustomAuthAttribute : AuthorizeAttribute 
    { 
     protected virtual void HandleUnauthorizedRequest(HttpActionContext actionContext) 
     { 
      if (actionContext == null) 
      { 
       throw Error.ArgumentNull("actionContext"); 
      } 

       actionContext.Response = 
       actionContext.ControllerContext.Request.CreateErrorResponse(
             HttpStatusCode.Unauthorized, 
             "My Un-Authorized Message"); 
     } 
    } 
+0

Работал как шарм !!!! Благодаря @CamBruce – aplon

Смежные вопросы