过滤器可以通过全局注册,支持依赖注入
TypeFilter
需要传入类型参数
public sealed class AuthorizeAdminAttribute : TypeFilterAttribute
{
public AuthorizeAdminAttribute(bool ignore = false)
:base(typeof(AuthorizeAdminFilter))
{
IgnoreFilter = ignore;
Arguments = new object[] { ignore };
}
/// <summary>
/// 获取一个值指示是否忽略过滤器动作的执行
/// </summary>
public bool IgnoreFilter { get; }
private class AuthorizeAdminFilter : IAsyncAuthorizationFilter
{
private readonly bool _ignoreFilter;
private readonly ILogger<AuthorizeAdminFilter> _logger;
public AuthorizeAdminFilter(bool ignoreFilter,
ILogger<AuthorizeAdminFilter>logger)
{
_logger = logger;
_ignoreFilter = ignoreFi