Swagger是这个非常强大的api文档工具,通常可以用来测试接口,和查看接口,就像这样:

非常的好用和快捷,这是一个小小的demo,我们在完成系统时,发布后,外部依旧可以用/swagger访问到这个接口文档,这就造成了系统不安全的问题,那么我们应该怎么办呢,我们需要隐藏这些接口。

如何隐藏呢,首先我们需要建立一个新类:

namespace TR.Unit
{
using System;
using System.Linq;
using Microsoft.AspNetCore.Mvc.ApiExplorer;
using Swashbuckle.AspNetCore.Swagger;
using Swashbuckle.AspNetCore.SwaggerGen; /// <summary>
/// 隐藏接口,不生成到swagger文档展示
/// </summary>
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] //此特性可以在方法上和类上使用 public partial class HiddenAttribute : Attribute
{
} public class HiddenFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
{
foreach (ApiDescription apiDescription in context.ApiDescriptionsGroups.Items.SelectMany(e => e.Items))
{
if (apiDescription.ControllerAttributes().OfType<HiddenAttribute>().Count() ==
&& apiDescription.ActionAttributes().OfType<HiddenAttribute>().Count() == )
{
continue;
} var key = "/" + apiDescription.RelativePath.TrimEnd('/');
if (!key.Contains("/test/") && swaggerDoc.Paths.ContainsKey(key))
{
swaggerDoc.Paths.Remove(key);
}
}
}
}
}

首先我们需要引入 using Swashbuckle.AspNetCore.Swagger; using Swashbuckle.AspNetCore.SwaggerGen;

这两个命名空间,其次我们需要继承Attribute 类,方便我们在需要隐藏的接口中使用隐藏特性,这里命名可以随意,不过还是直观一点。

然后就需要在你想要隐藏的控制器上加上 [Hidden]就可以啦,就像这样

    [Hidden]
[Route("Home")]
[Authorize]
public class HomeController : Controller
{
/// <summary>
/// 主界面
/// </summary>
/// <returns></returns>
[HttpGet]
public IActionResult Home()
{
return View();
}
}

这里是隐藏控制器下所有的接口,也可以方法上隐藏,从而暴露一些接口。

这就是隐藏Swagger接口的显示了,下次写Swagger接口文档如何分组。

.Net core 下Swagger如何隐藏接口的显示的更多相关文章

  1. dotnet core swagger filter 隐藏接口和显示枚举描述

    dotnet core 2.2开发项目中,常会使用Swagger UI来生成在线Api文档. 某些接口不想放到Swagger中可以这样写Filter: /// <summary> /// ...

  2. .NET Core使用swagger进行API接口文档管理

    一.问题背景 随着技术的发展,现在的开发模式已经更多的转向了前后端分离的模式,在前后端开发的过程中,联系的方式也变成了API接口,但是目前项目中对于API的管理很多时候还是通过手工编写文档,每次的需求 ...

  3. .net core 使用swagger自动生成接口文档

     前言 swagger是一个api文档自动生动工具,还集成了在线调试. 可以为项目自动生成接口文档, 非常的方便快捷 Swashbuckle.AspNetCore 是一个开源项目,用于生成 ASP.N ...

  4. .net core 使用swagger生成API文档

    [1]安装Swashbuckle.AspNetCore包 [2]在Startup.cs中注册swagger //注册Swagger生成器,定义一个和多个Swagger 文档 services.AddS ...

  5. .Net core 使用swagger进行Api管理

    上次我们讲过如何在swagger上隐藏接口,众所周知,swagger是一个强大的api文档工具,可以帮助我们记录文档并且测试接口,也是一个可视化操作接口的工具. 那么如果我们写的接口非常多的时候怎么办 ...

  6. asp.net core 使用 swagger 生成接口文档

    参考地址:http://www.cnblogs.com/daxnet/p/6181366.html http://www.jianshu.com/p/fa5a9b76f3ed 微软参考文档:https ...

  7. Asp.net Core的Swagger接口根据模块、版本分组

    近期一直在学习Asp.net Core,微软的文档太难看,都是英文翻译过来的,很不友好,感谢这个博客,从壹开始前后端分离[ .NET Core2.0 +Vue2.0 ],让我入门了,刚学到这个Swag ...

  8. 在 .NET Core 下的 Swagger UI 自定义操作

    1.Swagger UI 是什么? Swagger UI 是一个在线的 API 文档生成与测试工具,你可以将其集成在你的 API 项目当中. 支持 API 自动同步生成文档 高度自定义,可以自己扩展功 ...

  9. .net core 使用 swagger 生成接口文档

    微软参考文档:https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?tabs= ...

随机推荐

  1. Java jsp 自定义标签

    1 自定义标签 1.1 引入 需求: 向浏览器输出当前客户的IP地址 (只能使用jsp标签) 1.2 第一个自定义标签开发步骤 1)编写一个普通的java类,继承SimpleTagSupport类,叫 ...

  2. 关于Array 栈方法和队列方法

    栈方法: 推入 -- 弹出 // 栈方法 var colors = new Array(); var count = colors.push("red","green&q ...

  3. Flink Flow

    1. Create environment for stream computing StreamExecutionEnvironment env = StreamExecutionEnvironme ...

  4. 用 State Pattern 来实现一个简单的 状态机

    首先要理解 State Pattern 模式. http://www.dofactory.com/net/state-design-pattern Definition Allow an object ...

  5. JAVA的静态方法,静态变量,静态类。

    静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象                                ...

  6. 微信小程序开发前期准备

    开发文档 官方开发文档 开发IDE 官方工具下载 UI组件 WeUI:是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,新手建议使用: ZanUI-WeAp ...

  7. 颜色矩原理及Python实现

    原理 颜色矩(color moments)是由Stricker 和Orengo所提出的一种非常简单而有效的颜色特征.这种方法的数学基础在于图像中任何的颜色分布均可以用它的矩来表示.此外,由于颜色分布信 ...

  8. 微信小程序——组件(二)

    在上篇文章组件(一)里已经讲解了如何创建一个项目,现在继续...讲解一个页面布局以及各个组件的使用.在学习过程中,发现小程序支持flex布局,这对于学习过react native的人来说太好了,布局方 ...

  9. Python学习---重点模块之re

    正则表达式是用来操作字符串,但是字符串提供的正则是完全匹配,有时候我们需要进行模糊匹配,这个时候就需要正则表达式了.通过re模块来实现,由C语言来执行底层的匹配 字符匹配(普通字符,元字符): 1 普 ...

  10. x64 QWORD Xor shellcode encoder

    #!/usr/bin/env python #Filename: Xor_QWORD_x64.py #coding=utf-8 import re import sys import random i ...