欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.NET?Core使用功能開(kāi)關(guān)控制路由訪問(wèn)操作

 更新時(shí)間:2022年02月20日 09:26:22   作者:?IO?My?  
這篇文章主要介紹了ASP.NET?Core使用功能開(kāi)關(guān)控制路由訪問(wèn)操作,而對(duì)于一些試驗(yàn)性的功能,我們并不希望用密碼去控制是否允許訪問(wèn),而是想用一種開(kāi)關(guān)的方式開(kāi)放,下面文章我們就來(lái)試著實(shí)現(xiàn)這個(gè)功能,需要的小伙伴可以參考一下

前言:

在前面的文章,我們介紹了使用Middleware有條件地允許訪問(wèn)路由(《ASP.NET Core使用Middleware設(shè)置有條件允許訪問(wèn)路由》)。

而對(duì)于一些試驗(yàn)性的功能,我們并不希望用密碼去控制是否允許訪問(wèn),而是想用一種開(kāi)關(guān)的方式開(kāi)放。

1.功能開(kāi)關(guān)

功能開(kāi)關(guān)(Feature flags)就是這樣一種部署技術(shù),有助于提高應(yīng)用程序的靈活性。

使用功能開(kāi)關(guān),你可以將新功能部署到生產(chǎn)環(huán)境中,但限制其可用性。

通過(guò)使用開(kāi)關(guān),你可以為控制是否激活一項(xiàng)新功能,而無(wú)需重新啟動(dòng)應(yīng)用程序或部署新代碼。

它們將新功能的發(fā)布與代碼部署分離。

3.實(shí)現(xiàn)

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

然后,修改Startup.cs代碼:

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

接著,增加一個(gè)配置:

"FeatureManagement":?
? ? {
? ? ? ? "ForbiddenDebugEndpoint": false
? ? }

3.使用

修改我們上次實(shí)現(xiàn)的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,
? ? ? ? ? ? ? ? ? ? ? ? "無(wú)權(quán)訪問(wèn)"));
? ? ? ? }

? ? ? ? await next(context);
? ? ? ? ? ??
? ? }
}

關(guān)鍵就是這句話,我們使用了功能開(kāi)關(guān):

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

結(jié)論:

運(yùn)行后我們發(fā)現(xiàn),只需修改配置,無(wú)需重啟程序,我們就可以控制是否可以訪問(wèn)路由了:

到此這篇關(guān)于ASP.NET Core使用功能開(kāi)關(guān)控制路由訪問(wèn)操作的文章就介紹到這了,更多相關(guān)ASP.NET Core使用功能開(kāi)關(guān)控制路由訪問(wèn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論