.NET Core 自定义过滤器 AllowAnonymous 失效问题

 1         public override async Task OnAuthorizationAsync(AuthorizationFilterContext context)
 2         {
 3             await base.OnAuthorizationAsync(context);
 4 
 5             var descriptor = context.ActionDescriptor as ControllerActionDescriptor;
 6 
 7             //判断是否跳过授权过滤器
 8             if (descriptor.MethodInfo.GetCustomAttributes<AllowAnonymousAttribute>().Any())
 9             {
10                 //return;
11             }
12           
13             if (descriptor.MethodInfo.IsDefined(typeof(AllowAnonymousAttribute), true))
14             {
15                 //return;
16             }
17 
18             if (!context.HttpContext.User.Identity.IsAuthenticated) 
19             {
20                 context.Result = Unauthorized();
21                 return; 
22             }
23 
24             //do something
25         }

代码如上。

但是发现还是有坑,

GetCustomAttributes()

这个方法在基本的类库里边根本找不到,翻了翻其他项目 终于让我找到了!

这个方法在这样一个扩展包中 System.Reflection.Extensions ,引入之后就能找到那个方法了。

猜你喜欢

转载自www.cnblogs.com/TbKing-blogs/p/12967321.html