在项目开发中,类似权限这样的访问控制功能,我们该选择三者(AOP、Servlet Filter、Spring Interceptor)中的哪个来实现呢?
三者应用范围不同:
- Servlet filter 作用于容器,应用范围影响最大;比如 作用于Tomcat
- spring interceptor 作用于框架,范围影响适中;
- aop 作用于业务逻辑,精细化处理,范围影响最小。
AOP、Servlet Filter、Spring Interceptor这三者可以从不同权限检查的范围大小的视角来应用:
1. Servlet Filter
运维部门需要对只供内部访问的服务进行IP限制或访问审查时,在容器这一层增加一个Filter,在发布时发布系统自动加挂这个Filter,这样对上层应用就是透明的,内网IP地址段增减或审查规则调整都不需要上层应用的开发人员去关心。
2. Spring Interceptor
由框架或基础服务部门来提供的微服务间相互调用的授权检查时,可以提供统一的SDK,由程序员在需要的服务上配置。
3. AOP
业务应用内权限检查,可以把权限检查在统一模块中实现,通过配置由AOP加插拦截检查。