c# - 401 上的自定义 [授权] 消息

标签 c# asp.net-web-api owin authorize

我需要以不同的语言传递自定义的“未授权”消息,而不是默认的“此请求的授权已被拒绝”。我使用 Owin 作为身份验证,并使用 ApiControllers/方法的 [Authorize] 属性。我知道这可以通过自定义授权过滤器来完成,但仅仅更改发送到客户端的消息似乎是一种矫枉过正的情况。

是否有更简单的方法来更改消息,或者我应该坚持使用自定义授权过滤器?

谢谢

最佳答案

不幸的是这是不可能的。

基于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");
      }
    } 

关于c# - 401 上的自定义 [授权] 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42378644/

相关文章:

C#代码运行很慢

c# - 根据要求修改 OWIN/Katana PhysicalFileSystem 页面

asp.net-mvc - ASP.NET MVC 如何使用 CookieAuthenticationMiddleware 在内部验证 Cookie

c# - ASP.NET PhysicalFileProvider 在 Startup.cs 中不可用

c# - 使用 DeploymentItem 和 WatiN 的 MSTest - 文件未被复制

c# - 返回 Task<bool> 和只返回 bool 有什么区别

c# - Accumulo createBatchScanner 范围未按预期工作

c# - 带有 OWIN 的 WebApi 2 - 授权质询不会重定向到登录

c# - 使用 Directory.Delete() 和 Directory.CreateDirectory() 覆盖文件夹

c# - 我应该如何构建我的应用程序以支持移动应用程序