yonge 5 years ago
parent
commit
1f53e43ecd

+ 1 - 2
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/core/filter/PhoneLoginAuthenticationFilter.java

@@ -10,7 +10,6 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.AbstractAuthenticationToken;
 import org.springframework.security.authentication.AuthenticationServiceException;
-import org.springframework.security.authentication.LockedException;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
@@ -46,7 +45,7 @@ public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProces
 			tenantId = request.getParameter(tenantIdParameter);
 		}
 		if(StringUtils.isBlank(tenantId)){
-			throw new LockedException("缺少商户编号参数");
+			tenantId = DataSourceContextHolder.TENANT_ID;
 		}
 		
 		DataSourceContextHolder.setDataSourceKey(tenantId);

+ 1 - 2
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/core/filter/UsernameAuthenticationFilter.java

@@ -9,7 +9,6 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.AuthenticationServiceException;
-import org.springframework.security.authentication.LockedException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
@@ -56,7 +55,7 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 			tenantId = request.getParameter(tenantIdParameter);
 		}
 		if(StringUtils.isBlank(tenantId)){
-			throw new LockedException("缺少商户编号参数");
+			tenantId = DataSourceContextHolder.TENANT_ID;
 		}
 		
 		DataSourceContextHolder.setDataSourceKey(tenantId);

+ 28 - 0
edu-common/src/main/java/com/keao/edu/common/tenant/TenantContextHolder.java

@@ -0,0 +1,28 @@
+package com.keao.edu.common.tenant;
+
+
+public class TenantContextHolder {
+	
+
+	private static final ThreadLocal<Object> tenantContextHolder = new ThreadLocal<Object>();
+
+	public static void setTenantId(String tenantId) {
+		tenantContextHolder.set(tenantId);
+	}
+
+	/**
+	 * 获取数据源
+	 * @return
+	 */
+	public static Object getTenantId() {
+		return tenantContextHolder.get();
+	}
+
+	/**
+	 * 重置数据源
+	 */
+	public static void clearTenantId() {
+		tenantContextHolder.remove();
+	}
+
+}

+ 29 - 0
edu-common/src/main/java/com/keao/edu/common/tenant/TenantInterceptor.java

@@ -0,0 +1,29 @@
+package com.keao.edu.common.tenant;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+public class TenantInterceptor extends HandlerInterceptorAdapter {
+
+	private static final String TENANT_ID = "tenantId";
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+		String tenantId = request.getHeader(TENANT_ID);
+		if (StringUtils.isBlank(tenantId)) {
+			tenantId = request.getParameter(TENANT_ID);
+		}
+		TenantContextHolder.setTenantId(tenantId);
+
+		return true;
+	}
+
+	@Override
+	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+		TenantContextHolder.clearTenantId();
+	}
+
+}

+ 3 - 1
edu-datasource/src/main/java/com/keao/edu/datasource/DataSourceContextHolder.java

@@ -5,11 +5,13 @@ import java.util.Collection;
 import java.util.List;
 
 public class DataSourceContextHolder {
+	
+	public final static String TENANT_ID = "master";
 
 	private static final ThreadLocal<Object> contextHolder = new ThreadLocal<Object>() {
 		@Override
 		protected String initialValue() {
-			return "master";
+			return TENANT_ID;
 		}
 	};