需求:只允许内网的IP(也就是IP白名单)进行访问VideoController和ImgController,其余的FontController可以随便访问不做限制
总体的项目结构:
1、先写好业务代码三个Controller
访问的路径分别是:
/api/video/video1
/api/img/img1
/api/font/font1
2、进行ip白名单的配置
在yml文件中进行配置要放行的IP白名单,是一个List
3、针对上面的yml配置写获取白名单的类
用于接收yml中配置的IP白名单,注意配置和属性之间的名称要一致:myapp.allowedIps
4、定义拦截器
这里的需求是打印出来访问VideoController和ImgController的非白名单的IP并设置返回状态为 403
5、注册拦截器
注册拦截器的时候进行配置访问路径,在WebMvcConfig中addPathPatterns中加上要限制的url
6、测试
6.1、测试127.0.0.1不在黑名单中的场景
我们现在配置的白名单是:127.0.0.2、127.0.0.3,所以用127.0.0.1是访问不到VideoController和ImgController中对应的url,但是可以访问到FontController中的url
访问VideoController和ImgController,返回的状态是403,看到打印的日志
访问FontController中的url,是不受影响的
6.1、测试127.0.0.1在黑名单中的场景
将127.0.0.1加入到白名单中,再次测试,三个Controller都应该能够访问到
进行访问:
OK 测试没有问题。