业务场景
在SaaS环境中,租户是最重要的隔离业务数据的属性了,在自己的项目体系环境中,租户id能保证有值。但有个特殊场景,某些特殊权限的账号需要修改指定租户的内容,也即前端会携带租户信息过来,并且内部涉及很多业务逻辑处理(旧有自研工单工程),无法一个个接口去做改造,识别租户id,并代进去。那么就需要考虑spring给我们提供的功能了,拦截器就很适合。拦截请求,做一层处理,做到后续的接口无感知。
下面来介绍下具体落地方案:
定义拦截器
拦截ServletRequest,此处注意,租户上下文需要在请求中恢复干净,避免污染其他请求。
获取租户字段的变量值,注入到上下文中