.Net Core MVC实现自己的AllowAnonymous

全局过滤,在Startup中ConfigureServices里面添加如下代码

  services.AddMvc(options =>
                {
                    options.Filters.Add(typeof(MyActionFilterAttribute));
                }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

MyActionFilterAttribute的实现

public class MyActionFilterAttribute : ActionFilterAttribute
    {



        public override void OnActionExecuting(ActionExecutingContext context)
        {

            var controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
            if (controllerActionDescriptor != null)
            {
              
                var isDefined = controllerActionDescriptor.ControllerTypeInfo.GetCustomAttributes(inherit: true)
                    .Any(a => a.GetType().Equals(typeof(NoActionFilterAttribute)));

                if (!isDefined)
                {
                  //业务逻辑
                    base.OnActionExecuting(context);
                }
            }

        

        }
    }

NoActionFilterAttribute

    public class NoActionFilterAttribute : Attribute
    {
    }

在不需要验证的Controller上打上NoActionFilter特性即可

   [NoActionFilter]
    public class TestController : Controller
    {
    
    }
posted @ 2018-10-31 10:38  红泥巴煮雪  阅读(808)  评论(0编辑  收藏  举报