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 ,引入之后就能找到那个方法了。