珠海网站开发软件,用旧电脑做服务器建网站用,个人如何开投资公司,专业团队建设方案本篇博文中展示了如何在ASP.NET Core应用程序中设置IP白名单验证的3种方式。你可以使用一下3种方式#xff1a;使用中间件检查每个请求的远程IP地址使用Action过滤器为指定的Controller或action方法添加针对远程IP地址的检查使用IPageFilter为Razor Pages应用添加针对远程IP地… 本篇博文中展示了如何在ASP.NET Core应用程序中设置IP白名单验证的3种方式。你可以使用一下3种方式使用中间件检查每个请求的远程IP地址使用Action过滤器为指定的Controller或action方法添加针对远程IP地址的检查使用IPageFilter为Razor Pages应用添加针对远程IP地址的检查查看项目源代码白名单这里为了简化代码我们将IP白名单列表放置在配置文件appSettings.json中每个IP之间使用分号分隔。正式项目中可以将这个列表保存在数据库中便于管理使用中间件检查每个请求的远程IP地址这里我们首先添加一个中间件AdminSafeListMiddleware。代码解释这里在AdminSafeListMiddleware的构造函数中我们传入了从配置文件中读取的IP白名单列表当请求进入当前中间件时我们使用当前请求上下文的context.Connection.RemoteIpAddress获取到了客户端的IP如果客户端IP存在于IP白名单列表中就运行下一个中间件否则就直接返回401状态码。这里源代码中只过滤了非GET请求如果针对GET请求也需要启动IP白名单可以去掉这个判断然后我们需要在Startup.cs文件的Configure方法中将中间件添加到ASP.NET Core的中间件管道中。注意 这里我们在注册中间件的时候传入了从配置文件中读取的IP白名单。使用Action过滤器如果你只是希望为某些特性的Controller或Action方法添加IP白名单你可以使用Action过滤器。这里我们首先添加一个新类ClientIdCheckFilter, 它继承自ActionFilterAttribute这里代码逻辑和前面中间的基本一样主要的区别是这里我们是从IP白名单我们是从IConfiguration对象中手动获取的这里我们复写了OnActionExecuting方法如果当前客户端 IP存在于白名单中我们就调用基类OnActionExecuting方法执行当前Action请求否则就返回一个401状态码这里没有针对请求类型的判断所以指定当前过滤器的ActionGET请求也会受到白名单的限制第二步我们需要将这action过滤器添加到服务容器中。第三步我们可以在Action方法声明处添加ServiceFilter特性传入的参数是我们之前定义好的ClientIdCheckFilter。 例使用IPageFilterRazor Pages应用是ASP.NET Core 2.0中新引入的功能它是ASP.NET Core Mvc的一个子集。如果希望Razor Pages应用支持IP白名单我们需要创建一个新类ClientIdCheckPageFilter, 它实现了IPageFilter接口.这里的代码实现和IActionFilter的实现基本一样唯一的区别是代码放在了OnPageHandlerExecuting的实现中。第二步我们还是需要将ClientIdCheckPageFilter添加到MVC的过滤器集合中。总结本篇我们讲解了在ASP.NET Core中启用IP白名单验证的3种方式使用中间件检查每个请求的远程IP地址使用Action过滤器为指定的Controller或action方法添加针对远程IP地址的检查使用IPageFilter为Razor Pages应用添加针对远程IP地址的检查.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com