在原有的aspnetmvc中我们会使用到路由访问限制,在appstart/routeconfig.cs中写上如下:

routes.ignoreroute("{resource}.axd/{*pathinfo}");

但是在aspnet core mvc已经不存在routeconfig.cs的这个给文件和这种写法,我们该如何在aspnet core mvc中实现相同效果呢?

这里我们需要使用到的中间件时urlfirewall

1)说明:

urlfirewall 是一个开源、轻便的对http请求进行过滤的中间件,可使用在webapi或者网关

2)介绍:

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

3)使用:

1],从nuget添加组件到你的asp.net core项目

install-package urlfirewall.aspnetcore

2],配置di在startup.cs的configureservices

services.addurlfirewall(options =>
            {
                options.ruletype = urlfirewallruletype.black;
                options.setrulelist(configuration.getsection("urlblacklist"));
                options.statuscode = httpstatuscode.notfound;
            });

3],配置中间件在startup.cs 中的configure

app.useurlfirewall();//启用防火墙 开启黑名单请求路径
if (env.isdevelopment())
            {
                app.usedeveloperexceptionpage();
                //httpcontext
                app.usestatichttpcontext();
            }
            else
            {
                app.useexceptionhandler("/home/error");
                app.usehsts();
            }

4],根绝2中的configuration.getsection(“urlblacklist”)需要在使用的section名称·urlblacklist·我们在appsettings.json/appsettings.devolopment.json文件中添加以下配置

{
"logging": {
    "loglevel": {
      "default": "information",
      "microsoft": "warning",
      "microsoft.hosting.lifetime": "information"
    }
  },
  //防火墙过滤这类型的访问
  "urlblacklist": [
    {
      "url": "{resource}.axd/{*pathinfo}",
      "method": "all"
    }
  ]
}

这样,我们服务器上的.axd的就不会被请求到

到此这篇关于asp.net core 如何设置黑白名单(路由限制)的文章就介绍到这了,更多相关asp.net core设置路由黑白名单 内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!