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