ASP.NET?Core使用功能開關(guān)控制路由訪問操作
前言:
在前面的文章,我們介紹了使用Middleware
有條件地允許訪問路由(《ASP.NET Core使用Middleware設(shè)置有條件允許訪問路由》)。
而對于一些試驗性的功能,我們并不希望用密碼去控制是否允許訪問,而是想用一種開關(guān)的方式開放。
1.功能開關(guān)
功能開關(guān)(Feature flags
)就是這樣一種部署技術(shù),有助于提高應(yīng)用程序的靈活性。
使用功能開關(guān),你可以將新功能部署到生產(chǎn)環(huán)境中,但限制其可用性。
通過使用開關(guān),你可以為控制是否激活一項新功能,而無需重新啟動應(yīng)用程序或部署新代碼。
它們將新功能的發(fā)布與代碼部署分離。
3.實現(xiàn)
首先,我們需要引用nuget
包Microsoft.FeatureManagement.AspNetCore
。
然后,修改Startup.cs代碼:
public void ConfigureServices(IServiceCollection services) { ? ? ... ? ? services.AddFeatureManagement(); ? ? ... }
接著,增加一個配置:
"FeatureManagement":? ? ? { ? ? ? ? "ForbiddenDebugEndpoint": false ? ? }
3.使用
修改我們上次實現(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, ? ? ? ? ? ? ? ? ? ? ? ? "無權(quán)訪問")); ? ? ? ? } ? ? ? ? await next(context); ? ? ? ? ? ?? ? ? } }
關(guān)鍵就是這句話,我們使用了功能開關(guān):
var debugEndpoint = await _featureManager.IsEnabledAsync("ForbiddenDebugEndpoint");
結(jié)論:
運(yùn)行后我們發(fā)現(xiàn),只需修改配置,無需重啟程序,我們就可以控制是否可以訪問路由了:
到此這篇關(guān)于ASP.NET Core
使用功能開關(guān)控制路由訪問操作的文章就介紹到這了,更多相關(guān)ASP.NET Core使用功能開關(guān)控制路由訪問內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用.NET 開發(fā)服務(wù)器 應(yīng)用管理工具
這篇文章主要介紹如何利用.NET 開發(fā)一個應(yīng)用管理工具的服務(wù)器,文章回先聊背景接著其是喲美好方法,需要的的小伙伴可以參考一下小面文章的具體內(nèi)容2021-10-10asp.net core使用DevExtreme20將int列轉(zhuǎn)為checkbox方法示例
這篇文章主要為大家介紹了asp.net core使用DevExtreme20將int列轉(zhuǎn)為checkbox方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08ASP.NET學(xué)習(xí)中常見錯誤總結(jié)歸納
這篇文章主要介紹了asp.net學(xué)習(xí)過程中碰到的常見錯誤的解決方法,通讀本篇對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下2021-09-09.NET??Smobiler的復(fù)雜控件的由來與創(chuàng)造
這篇文章主要介紹了.NET Smobiler的復(fù)雜控件的由來與創(chuàng)造,Smobiler的復(fù)雜控件即利用自定義控件的方式組合控件,來使控件成為一個有機(jī)整體,里面的控件可相互協(xié)作交互,并使其達(dá)到高可用2022-08-08ASP.NET webUploader上傳大視頻文件相關(guān)web.config配置
本文主要介紹了webUploader上傳大視頻文件相關(guān)web.config的配置。具有一定的參考價值,下面跟著小編一起來看下吧2017-01-01