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

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

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

一. 前言

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

二.UrlFirewall 介紹

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

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名稱(chēng)·UrlBlackList·我們?cè)赼ppsettings.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請(qǐng)求url,支持通配符*和?,*表示匹配任意個(gè)數(shù)任意字符,?表示匹配一個(gè)任意字符。Method表示http請(qǐng)求方法,All代表所有,還有Get Post Delete Put。

四.擴(kuò)展

如果你想要實(shí)現(xiàn)自己的驗(yàn)證邏輯,或者從數(shù)據(jù)庫(kù)、Redis緩存等介質(zhì)查詢(xún)、獲取數(shù)據(jù)來(lái)進(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é)

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

相關(guān)文章

最新評(píng)論