ASP.NET Core使用功能开关控制路由访问操作

 更新时间:2022年02月20日 09:26:22   作者: IO My   
这篇文章主要介绍了ASP.NET Core使用功能开关控制路由访问操作,而对于一些试验性的功能,我们并不希望用密码去控制是否允许访问,而是想用一种开关的方式开放,下面文章我们就来试着实现这个功能,需要的小伙伴可以参考一下

前言:

在前面的文章,我们介绍了使用Middleware有条件地允许访问路由(《ASP.NET Core使用Middleware设置有条件允许访问路由》)。

而对于一些试验性的功能,我们并不希望用密码去控制是否允许访问,而是想用一种开关的方式开放。

1.功能开关

功能开关(Feature flags)就是这样一种部署技术,有助于提高应用程序的灵活性。

使用功能开关,你可以将新功能部署到生产环境中,但限制其可用性。

通过使用开关,你可以为控制是否激活一项新功能,而无需重新启动应用程序或部署新代码。

它们将新功能的发布与代码部署分离。

3.实现

首先,我们需要引用nugetMicrosoft.FeatureManagement.AspNetCore

然后,修改Startup.cs代码:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddFeatureManagement();
    ...
}

接着,增加一个配置:

"FeatureManagement": 
    {
        "ForbiddenDebugEndpoint": false
    }

3.使用

修改我们上次实现的DebugMiddleware

public class DebugMiddleware : IMiddleware
{
    private readonly IFeatureManager _featureManager;

    public DebugMiddleware(IFeatureManager featureManager)
    {
        _featureManager = featureManager;
    }
    public async Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        var isDebugEndpoint = context.Request.Path.Value.Contains("/test");
        var debugEndpoint = await _featureManager.IsEnabledAsync("ForbiddenDebugEndpoint");

        if (isDebugEndpoint && debugEndpoint)
        {
            context.SetEndpoint(new Endpoint((context) =>
            {
                context.Response.StatusCode = StatusCodes.Status403Forbidden;
                return Task.CompletedTask;
            },
                        EndpointMetadataCollection.Empty,
                        "无权访问"));
        }

        await next(context);
            
    }
}

关键就是这句话,我们使用了功能开关:

var debugEndpoint = await _featureManager.IsEnabledAsync("ForbiddenDebugEndpoint");

结论:

运行后我们发现,只需修改配置,无需重启程序,我们就可以控制是否可以访问路由了:

到此这篇关于ASP.NET Core使用功能开关控制路由访问操作的文章就介绍到这了,更多相关ASP.NET Core使用功能开关控制路由访问内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文透彻详解.NET框架类型系统设计要点

    一文透彻详解.NET框架类型系统设计要点

    这篇文章主要为大家透彻详解了选择.NET框架的n个理由,本系列的第一篇文章全面概述了平台的支柱和设计要点,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • HttpResponse的Output与OutputStream、Filter关系与区别介绍

    HttpResponse的Output与OutputStream、Filter关系与区别介绍

    在网上经常看见有这样的代码HttpResponse response = HttpContext.Current.Response;现在我也来说说这几个东东是什么吧
    2012-11-11
  • 修改 asp.net core 5 程序的默认端口号

    修改 asp.net core 5 程序的默认端口号

    这篇文章主要介绍了修改 asp.net core 5 程序的默认端口号,我们知道可以通过修改 launchSettings.json 文件中的端口号来实现端口切换,下面来看看具体的修改过程吧
    2022-01-01
  • upload上传单张图片

    upload上传单张图片

    这篇文章主要介绍了upload上传单张图片的代码,需要的朋友可以参考下。
    2015-07-07
  • .NET6新特新 struct优化

    .NET6新特新 struct优化

    这篇文章主要给大家分享的是 NET6新特新 struct优化,在.NET6中针对Struct做了一些优化,下面我们就通过一些案例来看一下.NET6中针对Struct的优化,需要的朋友可以参考一下,希望对大家有所帮助
    2021-11-11
  • ASP.NET Core  依赖注入框架的使用

    ASP.NET Core 依赖注入框架的使用

    还记得上篇文章中最后提及到,假如服务越来越多怎么处理呢,本篇文章将会带来解决办法, ASP.NET Core 依赖注入框架的相关资料,需要的小伙伴可以参考下面文章的具体内容
    2021-10-10
  • ASP.NET Core MVC 依赖注入View与Controller

    ASP.NET Core MVC 依赖注入View与Controller

    本文重点给大家介绍的是ASP.NET Core MVC 之依赖注入 View 和ASP.NET Core MVC 之依赖注入 Controller的相关资料,需要的小伙伴可以参考下面文章具体内容
    2021-09-09
  • .Net Core 之AutoFac的使用

    .Net Core 之AutoFac的使用

    本文简单介绍了AutoFac的基本使用以及在asp .net core中的应用,文中通过代码讲解相关知识非常的详细,对大家的学习或工作都很有帮助,感兴趣的小伙伴可以参考一下这篇文章
    2021-09-09
  • asp.net mvc路由篇 如何找到 IHttpHandler方法介绍

    asp.net mvc路由篇 如何找到 IHttpHandler方法介绍

    学习是使用asp.net已经有很长一段时间了,现在就来分析一下mvc的整过过程吧。个人计划写一个mvc系列的博文,仅从源代码的角度来分析mvc。在接触mvc时我们一定会经历路由,那么路由这东东是怎么搞出来的啊
    2012-11-11
  • ASP.NET通过Web.config实现验证账号密码是否正确进行登录

    ASP.NET通过Web.config实现验证账号密码是否正确进行登录

    本文是通过authentication(认证访问者) 和 authorization( 访问权限),来实现一个简单的判断用户账号密码是否正确,需要的朋友可以参考下
    2021-09-09

最新评论