Web API添加Swagger

1,添加NuGet包:Swashbuckle

2,添加类HttpAuthHeaderFilter:

    /// <summary>
    /// swagger 增加 AUTH 选项
    /// </summary>
    public class HttpAuthHeaderFilter : IOperationFilter
    {
        /// <summary>
        /// 应用
        /// </summary>
        /// <param name="operation"></param>
        /// <param name="schemaRegistry"></param>
        /// <param name="apiDescription"></param>
        public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
        {
            if (operation.parameters == null)
                operation.parameters = new List<Parameter>();
            var filterPipeline = apiDescription.ActionDescriptor.GetFilterPipeline(); //判断是否添加权限过滤器
            var isAuthorized = filterPipeline.Select(filterInfo => filterInfo.Instance).Any(filter => filter is IAuthorizationFilter); //判断是否允许匿名方法 
            var allowAnonymous = apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any();
            if (isAuthorized && !allowAnonymous)
            {
                operation.parameters.Add(new Parameter { name = "Authorization", @in = "header", description = "鉴权Token", required = false, type = "string" });
            }
        }
    }

3,在生成的SwaggerConfig中加入

c.OperationFilter<HttpAuthHeaderFilter>();
c.IncludeXmlComments(string.Format("{0}/bin/API.XML", System.AppDomain.CurrentDomain.BaseDirectory));

4,在 属性->生成 中的 XML文档文件中打勾,如下图:

 

posted @ 2022-03-21 15:26  李国将  阅读(155)  评论(0)    收藏  举报