package com.kidgrow.common.filter; import cn.hutool.core.util.StrUtil; import com.kidgrow.common.constant.SecurityConstants; import com.kidgrow.common.context.ClientContextHolder; import com.kidgrow.common.context.TenantContextHolder; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.web.filter.OncePerRequestFilter; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* * @Description: 租户过滤器
* @Project:
* @CreateDate: Created in 2020/2/27 15:02
* @Author: liuke */ @ConditionalOnClass(Filter.class) public class TenantFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException, ServletException { try { String clientId = request.getHeader(SecurityConstants.CLIENT_HEADER); //保存ClientID if (StrUtil.isNotEmpty(clientId)) { ClientContextHolder.setClient(clientId); } //优先获取请求参数中的tenantId值 // String tenantId = request.getParameter(CommonConstant.TENANT_ID_PARAM); String tenantId = ""; if (StrUtil.isEmpty(tenantId)) { tenantId = request.getHeader(SecurityConstants.TENANT_HEADER); } //保存租户id if (StrUtil.isNotEmpty(tenantId)) { TenantContextHolder.setTenant(tenantId); } filterChain.doFilter(request, response); } finally { TenantContextHolder.clear(); } } }