虚位以待(AD)
虚位以待(AD)
首页 > 网络编程 > ASP.NET > ASP.NET Core利用UrlFirewall对请求进行过滤的方法示例

ASP.NET Core利用UrlFirewall对请求进行过滤的方法示例
类别:ASP.NET   作者:码皇   来源:互联网   点击:

这篇文章主要给大家介绍了关于ASP NET Core利用UrlFirewall对请求进行过滤的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一. 前言

UrlFirewall 是一个开源、轻便的对http请求进行过滤的中间件,可使用在webapi或者网关(比如Ocelot),由我本人编写,并且开源在github:https://github.com/stulzq/UrlFirewall  (本地下载)

二.UrlFirewall 介绍

UrlFirewall 是一款http请求过滤中间件,可以和网关(Ocelot)搭配,实现屏蔽外网访问内部接口,只让内部接口之间相互通讯,而不暴露到外部。它支持黑名单模式和白名单模式,支持自定义http请求响应代码。具有良好的扩展性,可自己实现验证逻辑,从数据库或者Redis缓存等介质实现对规则的检索。

三.使用

1.从Nuget添加组件到你的ASP.NET Core项目

    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.配置规则

根据步骤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,支持通配符*和?,*表示匹配任意个数任意字符,?表示匹配一个任意字符。Method表示http请求方法,All代表所有,还有Get Post Delete Put。

四.扩展

如果你想要实现自己的验证逻辑,或者从数据库、Redis缓存等介质查询、获取数据来进行验证;你可以实现IUrlFirewallValidator接口,然后调用AddUrlFirewallValidator方法替换默认实现即可。

示例:

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

五.地址

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

您可能感兴趣的文章:

  • win10下ASP.NET Core部署环境搭建步骤
  • Visual Studio 2017 ASP.NET Core开发
  • asp.net core实现文件上传功能
  • 在IIS上部署ASP.NET Core项目的图文方法
  • 解决asp.net core在输出中文时乱码的问题
  • ASP.NET Core配置教程之读取配置信息
  • VS2015 搭建Asp.net core开发环境的方法
  • 浅谈如何在ASP.NET Core中实现一个基础的身份认证
  • ASP.NET Core环境变量和启动设置的配置教程
  • Linux(Ubuntu)下搭建ASP.NET Core环境
相关热词搜索: asp net core 教程 asp net core 过滤器 a