ASP.NET Core利用UrlFirewall對(duì)請(qǐng)求進(jìn)行過(guò)濾的方法示例
一. 前言
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)文章
.NET之后臺(tái)用戶(hù)權(quán)限管理實(shí)現(xiàn)
在功能性比較強(qiáng)大的后臺(tái)管理網(wǎng)站處于各種角度考慮多有應(yīng)用權(quán)限管理功能。以公司內(nèi)部管理系統(tǒng)為例,管理員根據(jù)不同員工所在不同部門(mén)賦予其不同權(quán)限,或者根據(jù)上下級(jí)隸屬關(guān)系實(shí)現(xiàn)“金字塔”管理。本文內(nèi)容有不盡不實(shí)之處懇請(qǐng)指正。2013-02-02asp.net cookie的操作,寫(xiě)入、讀取與操作
asp.net cookie的操作,寫(xiě)入、讀取與操作實(shí)現(xiàn)代碼。2009-05-05ASP.NET 頁(yè)面之間傳遞值方式優(yōu)缺點(diǎn)比較
URL、Session、Cookies、Server.Transfer、Application和跨頁(yè)面?zhèn)魉汀?/div> 2009-11-11VS2012實(shí)現(xiàn)簡(jiǎn)單登錄界面
這篇文章主要為大家詳細(xì)介紹了VS2012實(shí)現(xiàn)簡(jiǎn)單登錄界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06Entity?Framework?Core基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫(kù)
這篇文章介紹了Entity?Framework?Core基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫(kù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04ASP.NET?MVC實(shí)現(xiàn)本地化和全球化
這篇文章介紹了ASP.NET?MVC實(shí)現(xiàn)本地化和全球化的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10在.NET?Core中使用CSRedis的詳細(xì)過(guò)程
這篇文章主要介紹了在.NET?Core中使用CSRedis的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06ASP.NET?Core使用EF?SQLite對(duì)數(shù)據(jù)庫(kù)增刪改查
這篇文章介紹了ASP.NET?Core使用EF?SQLite對(duì)數(shù)據(jù)庫(kù)增刪改查的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01適用與firefox ASP.NET無(wú)刷新二級(jí)聯(lián)動(dòng)下拉列表
適用與firefox ASP.NET無(wú)刷新二級(jí)聯(lián)動(dòng)下拉列表...2007-08-08最新評(píng)論