当前位置: 首页 > 知识库问答 >
问题:

使用Swashbuckle和ASP.NET标识限制对Swagger中某些API控制器的访问

段干飞翮
2023-03-14

所以,我开始使用昂首阔步。我绝对喜欢它的功能,但我对所有方法的可用性有一些怀疑。

据我所知--Swaschbuclke“Auth”方法中包含的所有方法实际上都是关于API本身的,但我在这方面不需要帮助--我的所有API都受到API ID/密钥对的保护。

我想以某种方式使用ASP.NET标识(登录系统)来限制对API页面(/swagger/ui/index)的访问。

有什么办法吗?Swaschbuckle有什么方法吗?有路线/身份黑客攻击吗?

任何帮助都很感激。

Edit1:[apiExplorerSettings(IgnoreApi=true)]属性不是我要找的--它限制了对方法的所有访问,而不管其身份如何。

共有1个答案

司空鸣
2023-03-14

关于限制您的狂妄文档中单个API的暴露:

虚张声势5.x:

Swashbuckle5.x有一个名为IgnoreObsoleteActions的配置选项(您需要设置它;默认情况下不启用它),如果操作具有[Obsolete]属性,该选项将隐藏操作。

httpConfiguration
    .EnableSwagger(c =>
        {
            c.IgnoreObsoleteActions();
        });

Swashbuckle在IAPIExplorer之上构建了swagger文档。您应该能够添加一个属性--[ApiExplorerSettings(IgnoreApi=true)]--来管理ApiExplorerSettings控制器类或单个控制器方法,以便在生成文档时让资源管理器(以及随后的Swashbuckle)忽略它们。

示例:个人行动

/// Ignore 'GetFoo' in documentation
public class FooBarController
{
    [ApiExplorerSettings(IgnoreApi = true)]
    public Bar GetFoo
    {
       ...
    }

    public Bar GetBar
    {
       ...
    }
}

示例:控制器类

/// Ignore every controller method in FooBarController in documentation
[ApiExplorerSettings(IgnoreApi = true)]
public class FooBarController
{
    public Bar GetFoo
    {
       ...
    }

    public Bar GetBar
    {
       ...
    }
}

更多细节请参见本GitHub问题。我自己在Swashbuckle 4.1.x中也用过这个。

 类似资料:
  • 我目前在我的项目中使用swagger,我有100多个控制器。我想由于大量的控制器,swagger UI文档页面需要超过5分钟来加载它的控制器。是否可以在UI页面选择特定的控制器,并只为它们加载选项?或者还有其他方法可以更快地加载UI页面?帮帮我!

  • 我有工作的c转换器: 在Web配置中,我有: 一切都很好,但它适用于所有控制器,我需要它只执行一些控制器。 我们可以指定哪些转换器或参数应该与自定义转换器一起使用,哪些不应该?

  • 本文向大家介绍ASP.NET中Webservice安全 实现访问权限控制,包括了ASP.NET中Webservice安全 实现访问权限控制的使用技巧和注意事项,需要的朋友参考一下 一、 概述:   Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。它逻辑性的为 其他应用程序提供数据与服务.各应用程序通过网络协

  • 问题内容: 我想使用Redis功能,例如MVC控制器中的位字段和哈希字段。我知道ASP.NET核心中内置了缓存支持,但这仅支持基本的GET和SET命令,而不支持我的应用程序中所需的命令。我知道如何从普通(例如控制台)应用程序中使用StackExchange.Redis,但是我不确定如何在ASP站点中进行设置。 我应该将所有连接初始化代码放在哪里,以便以后可以从控制器访问它?这是我将使用依赖项注入的

  • 我有一个小问题访问一些控制器。当我向发送请求时,我会得到一个HTTP404,对于路径也是如此。 MovieController的一部分: 从这一个,我希望a只是得到一个测试后,但我得到了404。 控制台部分: 我的项目图片: 我尝试用注册我的控制器,但发生了同样的事情。 我可以访问一些endpoint,如、、...我使用spring-boot和jersey作为java 8的REST框架。