我已在 IIS 和 NGINX 中部署了 .net core 代码。他们有什么办法可以限制用户不使用特定的 API 并且不再次部署代码吗?
或者如果我必须再次部署,他们有什么方法可以限制用户他/她不能使用该 API?
如果我正确理解你的问题,你可以添加一个功能标志,.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