mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-04-05 17:38:01 +08:00
56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
// <copyright file="GlobalHttpHeaderOperationFilter.cs" company="openauth.net.cn">
|
||
// Copyright (c) 2019 openauth.net.cn. All rights reserved.
|
||
// </copyright>
|
||
// <author>www.cnblogs.com/yubaolee</author>
|
||
// <date>2019-01-05</date>
|
||
// <summary>在swagger界面加上http header</summary>
|
||
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using Infrastructure;
|
||
using Microsoft.AspNetCore.Authorization;
|
||
using Microsoft.Extensions.Options;
|
||
using Microsoft.OpenApi.Models;
|
||
using OpenAuth.App;
|
||
using Swashbuckle.AspNetCore.SwaggerGen;
|
||
|
||
namespace OpenAuth.WebApi.Model
|
||
{
|
||
public class GlobalHttpHeaderOperationFilter : IOperationFilter
|
||
{
|
||
private IOptions<AppSetting> _appConfiguration;
|
||
|
||
public GlobalHttpHeaderOperationFilter(IOptions<AppSetting> appConfiguration)
|
||
{
|
||
_appConfiguration = appConfiguration;
|
||
}
|
||
|
||
public void Apply(OpenApiOperation operation, OperationFilterContext context)
|
||
{
|
||
//如果是Identity认证方式,不需要界面添加x-token得输入框
|
||
if (_appConfiguration.Value.IsIdentityAuth)
|
||
return;
|
||
|
||
if (operation.Parameters == null)
|
||
{
|
||
operation.Parameters = new List<OpenApiParameter>();
|
||
}
|
||
|
||
var actionAttrs = context.ApiDescription.ActionDescriptor.EndpointMetadata;
|
||
var isAnony = actionAttrs.Any(a => a.GetType() == typeof(AllowAnonymousAttribute));
|
||
|
||
//不是匿名,则添加默认的X-Token
|
||
if (!isAnony)
|
||
{
|
||
operation.Parameters.Add(new OpenApiParameter
|
||
{
|
||
Name = Define.TOKEN_NAME,
|
||
In = ParameterLocation.Header,
|
||
Description = "当前登录用户登录token",
|
||
Required = false
|
||
});
|
||
}
|
||
}
|
||
}
|
||
}
|