ASP.NET Core使用功能開關控制路由訪問操作
前言:
在前面的文章,我們介紹瞭使用Middleware
有條件地允許訪問路由(《ASP.NET Core使用Middleware設置有條件允許訪問路由》)。
而對於一些試驗性的功能,我們並不希望用密碼去控制是否允許訪問,而是想用一種開關的方式開放。
1.功能開關
功能開關(Feature flags
)就是這樣一種部署技術,有助於提高應用程序的靈活性。
使用功能開關,你可以將新功能部署到生產環境中,但限制其可用性。
通過使用開關,你可以為控制是否激活一項新功能,而無需重新啟動應用程序或部署新代碼。
它們將新功能的發佈與代碼部署分離。
3.實現
首先,我們需要引用nuget
包Microsoft.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使用功能開關控制路由訪問內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- ASP.NET Core使用功能開關控制路由訪問操作(續)
- ASP.NET Core使用Middleware設置有條件允許訪問路由
- 詳解ASP.NET Core中間件Middleware
- ASP.NET Core自定義中間件的方式詳解
- ASP.NET Core基於滑動窗口實現限流控制