Asp.net Core 如何設置黑白名單(路由限制)
在原有的AspnetMvc中我們會使用到路由訪問限制,在AppStart/RouteConfig.cs中寫上如下:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
但是在aspnet core mvc已經不存在RouteConfig.cs的這個給文件和這種寫法,我們該如何在Aspnet core mvc中實現相同效果呢?
這裡我們需要使用到的中間件時UrlFirewall
1)說明:
UrlFirewall 是一個開源、輕便的對http請求進行過濾的中間件,可使用在webapi或者網關
2)介紹:
UrlFirewall 是一款http請求過濾中間件,可以和網關(Ocelot)搭配,實現屏蔽外網訪問內部接口,隻讓內部接口之間相互通訊,而不暴露到外部。它支持黑名單模式和白名單模式,支持自定義http請求響應代碼。具有良好的擴展性,可自己實現驗證邏輯,從數據庫或者Redis緩存等介質實現對規則的檢索
3)使用:
1],從Nuget添加組件到你的ASP.NET Core項目
Install-Package UrlFirewall.AspNetCore
2],配置DI在startup.cs的ConfigureServices
services.AddUrlFirewall(options => { options.RuleType = UrlFirewallRuleType.Black; options.SetRuleList(Configuration.GetSection("UrlBlackList")); options.StatusCode = HttpStatusCode.NotFound; });
3],配置中間件在startup.cs 中的Configure
app.UseUrlFirewall();//啟用防火墻 開啟黑名單請求路徑 if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); //HttpContext app.UseStaticHttpContext(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); }
4],根絕2中的Configuration.GetSection(“UrlBlackList”)需要在使用的Section名稱·UrlBlackList·我們在appsettings.json/appsettings.Devolopment.json文件中添加以下配置
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, //防火墻過濾這類型的訪問 "UrlBlackList": [ { "Url": "{resource}.axd/{*pathInfo}", "Method": "All" } ] }
這樣,我們服務器上的.axd的就不會被請求到
到此這篇關於Asp.net Core 如何設置黑白名單(路由限制)的文章就介紹到這瞭,更多相關Asp.net Core設置路由黑白名單 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- ASP.NET Core中的配置詳解
- ASP.Net Core MVC基礎系列之獲取配置信息
- ASP.Net Core MVC基礎系列之環境設置
- ASP.NET Core配置設置之Configuration包
- .net core中編輯json配置文件的方法