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!

推薦閱讀: