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

ASP.NET Core利用UrlFirewall對請求進(jìn)行過濾的方法示例

 更新時間:2018年05月06日 14:32:20   作者:曉晨Master  
這篇文章主要給大家介紹了關(guān)于ASP.NET Core利用UrlFirewall對請求進(jìn)行過濾的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一. 前言

UrlFirewall 是一個開源、輕便的對http請求進(jìn)行過濾的中間件,可使用在webapi或者網(wǎng)關(guān)(比如Ocelot),由我本人編寫,并且開源在github:https://github.com/stulzq/UrlFirewall  (本地下載)

二.UrlFirewall 介紹

UrlFirewall 是一款http請求過濾中間件,可以和網(wǎng)關(guān)(Ocelot)搭配,實(shí)現(xiàn)屏蔽外網(wǎng)訪問內(nèi)部接口,只讓內(nèi)部接口之間相互通訊,而不暴露到外部。它支持黑名單模式和白名單模式,支持自定義http請求響應(yīng)代碼。具有良好的擴(kuò)展性,可自己實(shí)現(xiàn)驗(yàn)證邏輯,從數(shù)據(jù)庫或者Redis緩存等介質(zhì)實(shí)現(xiàn)對規(guī)則的檢索。

三.使用

1.從Nuget添加組件到你的ASP.NET Core項(xiàng)目

Install-Package UrlFirewall.AspNetCore

2.配置DI

public void ConfigureServices(IServiceCollection services)
{
 services.AddUrlFirewall(options =>
 {
  options.RuleType = UrlFirewallRuleType.Black;
  options.SetRuleList(Configuration.GetSection("UrlBlackList"));
  options.StatusCode = HttpStatusCode.NotFound;
 });
 services.AddMvc();
 //...
}

3.配置中間件

UrlFirewall中間件的位置必須放在第一個

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
 //Configure url firewall middleware. Top most.
 app.UseUrlFirewall();

 if (env.IsDevelopment())
 {
  app.UseDeveloperExceptionPage();
 }
 app.UseMvc();
}

4.配置規(guī)則

根據(jù)步驟2,使用的Section名稱·UrlBlackList·我們在appsettings.json/appsettings.Devolopment.json文件中添加以下配置;

{
 "Logging": {
 "IncludeScopes": false,
 "LogLevel": {
  "Default": "Debug",
  "System": "Information",
  "Microsoft": "Information"
 }
 },
 "UrlBlackList": [
 {
  "Url": "/api/cart/add",
  "Method": "All"
 },
 {
  "Url": "/api/cart/del",
  "Method": "Post"
 },
 {
  "Url": "/api/cart/list",
  "Method": "Get"
 },
 {
  "Url": "/api/product/*",
  "Method": "All"
 }
 ]
}

Url 字段表示要攔截的http請求url,支持通配符*和?,*表示匹配任意個數(shù)任意字符,?表示匹配一個任意字符。Method表示http請求方法,All代表所有,還有Get Post Delete Put。

四.擴(kuò)展

如果你想要實(shí)現(xiàn)自己的驗(yàn)證邏輯,或者從數(shù)據(jù)庫、Redis緩存等介質(zhì)查詢、獲取數(shù)據(jù)來進(jìn)行驗(yàn)證;你可以實(shí)現(xiàn)IUrlFirewallValidator接口,然后調(diào)用AddUrlFirewallValidator方法替換默認(rèn)實(shí)現(xiàn)即可。

示例:

services.AddUrlFirewall(options =>
{
 options.RuleType = UrlFirewallRuleType.Black;
 options.SetRuleList(Configuration.GetSection("UrlBlackList"));
 options.StatusCode = HttpStatusCode.NotFound;
}).AddUrlFirewallValidator<CustomValidator>();

五.地址

源碼和Demo:https://github.com/stulzq/UrlFirewall (本地下載)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論