using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace YBDevice.NApi
{
///
/// swagger ui 增加header
///
public class AddAuthTokenHeaderParameter : IOperationFilter
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
var filterDescriptors = context.ApiDescription.ActionDescriptor.FilterDescriptors;
//检查是否存在自定义的过滤器ApiAuthorizeFilter,如果有说明需要token
var isAuthorized = filterDescriptors.Select(filterInfo => filterInfo.Filter).Any(filter => filter is ApiAuthorizeFilter);
if (isAuthorized)
{
if (operation.Parameters == null)
{
operation.Parameters = new List();
}
operation.Parameters.Add(new OpenApiParameter
{
Name = "token",
In = ParameterLocation.Header,
Description = "请输入token值",
Required = true,
Schema = new OpenApiSchema
{
Type = "string",
Default = new OpenApiString(""),
}
});
//operation.Responses.Add("401", new OpenApiResponse { Description = "Unauthorized" });
//operation.Responses.Add("403", new OpenApiResponse { Description = "Forbidden" });
}
}
}
}