/// <summary> /// Adds the authorization filter. /// </summary> /// <param name="filter">The filter.</param> protected virtual void AddAuthorizationFilter(IAuthorizationFilter filter) { if (!AuthorizationFilters.Contains(filter)) { AuthorizationFilters.Add(filter); } }
private void AddFilter(Filter filter) { if (filter == null) { throw new ArgumentNullException(nameof(filter)); } var instance = filter.Instance; if (instance is IAuthenticationFilter authentication) { AuthenticationFilters.Add(new FilterInfo <IAuthenticationFilter> { Filter = authentication, Scope = filter.Scope, Order = filter.Order }); } if (instance is IAuthorizationFilter authorization) { AuthorizationFilters.Add(new FilterInfo <IAuthorizationFilter> { Filter = authorization, Scope = filter.Scope, Order = filter.Order }); } if (instance is IActionFilter action) { ActionFilters.Add(new FilterInfo <IActionFilter> { Filter = action, Scope = filter.Scope, Order = filter.Order }); } if (instance is IResultFilter result) { ResultFilters.Add(new FilterInfo <IResultFilter> { Filter = result, Scope = filter.Scope, Order = filter.Order }); } if (instance is IExceptionFilter exception) { ExceptionFilters.Add(new FilterInfo <IExceptionFilter> { Filter = exception, Scope = filter.Scope, Order = filter.Order }); } }
/// <summary> /// 添加过滤器 /// </summary> /// <param name="filter">过滤器</param> /// <exception cref="ArgumentNullException"></exception> /// <returns></returns> public static bool Add(IFilter filter) { if (filter == null) { throw new ArgumentNullException(); } if (filter.AllowMultiple == false) { var allFilters = ActionFilters.Cast <IFilter>().Concat(AuthorizationFilters).Concat(ExceptionFilters); if (allFilters.Any(item => item.GetType() == filter.GetType())) { return(false); } } var actionFilter = filter as IActionFilter; var authorizationFilter = filter as IAuthorizationFilter; var exceptionFilter = filter as IExceptionFilter; if (actionFilter != null) { ActionFilters = ActionFilters .Concat(new[] { actionFilter }) .OrderBy(item => item.Order); } if (authorizationFilter != null) { AuthorizationFilters = AuthorizationFilters .Concat(new[] { authorizationFilter }) .OrderBy(item => item.Order); } if (exceptionFilter != null) { ExceptionFilters = ExceptionFilters .Concat(new[] { exceptionFilter }) .OrderBy(item => item.Order); } return(true); }