【问题标题】:Custom attribute validation in ASP.NET Core is running before JWT token is processedASP.NET Core 中的自定义属性验证在处理 JWT 令牌之前运行
【发布时间】:2021-02-22 15:59:44
【问题描述】:

asp.net核心授权

我正在尝试使用自定义授权属性来更好地控制这样的控制器操作(有点类似于How do you create a custom AuthorizeAttribute in ASP.NET Core?

[MyCustomAuth(Permissions="Products/Read")]
public IActionResult SomeMethod()
{
    .....
}



public class MyCustomAuthAttribute : AuthorizeAttribute, IAuthorizationFilter
    {
        public string Permissions { get; set; } //Permission string to get from controller

        public void OnAuthorization(AuthorizationFilterContext context)
        {
            //
            //read jwttoken
            //and process permissions string
            //to decide if user can run controller method
            //
            ..
        }
    }

不幸的是,ASP.NET 核心中内置的 JWT 授权处理程序(在 startup.cs 中配置)仅在此自定义属性运行代码之后运行,因此我似乎无法访问 JWT 令牌,然后处理自定义身份验证参数。

是否强制先处理 JWT 令牌,然后使用自定义属性进行额外验证?

【问题讨论】:

    标签: asp.net-core authorization


    【解决方案1】:

    我想我找到了解决方案...它似乎有效..但有人可以确认这是正确的方法吗?

    只需实现 IOrderedFilter 接口并将 Order 设置为大数字即可。这意味着将首先调用 JWT 身份验证,然后调用您的自定义授权过滤器。

    public class MyCustomAuthAttribute : AuthorizeAttribute, IAuthorizationFilter
    {
     ... 
     public int Order => 9999;
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-26
      • 2017-01-03
      • 2020-08-22
      • 1970-01-01
      • 2020-09-04
      • 2020-07-01
      • 2021-12-17
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多