限制特定Rest API不可访问但部署代码

问题描述 投票:0回答:1

我已在 IIS 和 NGINX 中部署了 .net core 代码。他们有什么办法可以限制用户不使用特定的 API 并且不再次部署代码吗?

或者如果我必须再次部署,他们有什么方法可以限制用户他/她不能使用该 API?

c# .net rest asp.net-core
1个回答
0
投票

如果我正确理解你的问题,你可以添加一个功能标志,.net 有一个内置工具,允许你激活或停用给定的控制器或控制器操作。

您可以通过在启动、程序或任何配置服务的位置配置服务来完成此操作:

using Microsoft.FeatureManagement;      

builder.Services.AddFeatureManagement(Configuration.GetSection("MyFeatureFlags"));

您可以将您的功能标志添加到appsettings.json,以便您可以轻松更改它而无需触摸代码,连接到您的appsettings功能标志配置:

using Microsoft.Extensions.Configuration.AzureAppConfiguration;

var builder = WebApplication.CreateBuilder(args);

builder.Configuration.AddAzureAppConfiguration(options =>
    options.Connect(
        builder.Configuration["ConnectionStrings:AppConfig"])
        .UseFeatureFlags());

然后您应该将其添加到中间件中的应用程序中:

builder.Services.AddAzureAppConfiguration();

app.UseAzureAppConfiguration();

以及 appsettings.json:

{"FeatureManagement": {
        "FeatureA": true, // Feature flag set to on
        "FeatureB": false, // Feature flag set to off
        "FeatureC": {
            "EnabledFor": [
                {
                    "Name": "Percentage",
                    "Parameters": {
                        "Value": 50
                    }
                }
            ]
        }
    }
}

您可以在操作/方法中使用它来“隐藏”给定的流程,或者使用它来禁用控制器或单个操作,我相信这是您的用例:

using Microsoft.FeatureManagement.Mvc;

[FeatureGate(MyFeatureFlags.FeatureA)]
public IActionResult Index()
{
    return View();
}

您还可以在此处缓存这些值并执行其他巧妙的技巧、参考和更详细的信息:

https://learn.microsoft.com/en-us/azure/azure-app-configuration/use-feature-flags-dotnet-core

© www.soinside.com 2019 - 2024. All rights reserved.