parent
d5d606b0d3
commit
c149282006
|
@ -39,7 +39,11 @@
|
|||
<groupId>cc.iotkit</groupId>
|
||||
<artifactId>iot-common-redis</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>cc.iotkit</groupId>
|
||||
<artifactId>iot-common-tenant</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cc.iotkit</groupId>
|
||||
<artifactId>iot-common-web</artifactId>
|
||||
|
|
|
@ -2,12 +2,15 @@ package cc.iotkit.common.satoken.config;
|
|||
|
||||
import cc.iotkit.common.satoken.core.dao.PlusSaTokenDao;
|
||||
import cc.iotkit.common.satoken.core.service.SaPermissionImpl;
|
||||
import cc.iotkit.common.tenant.interceptor.TenantInterceptor;
|
||||
import cn.dev33.satoken.dao.SaTokenDao;
|
||||
import cn.dev33.satoken.jwt.StpLogicJwtForSimple;
|
||||
import cn.dev33.satoken.stp.StpInterface;
|
||||
import cn.dev33.satoken.stp.StpLogic;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
/**
|
||||
|
@ -15,8 +18,12 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|||
*
|
||||
* @author Lion Li
|
||||
*/
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@AutoConfiguration
|
||||
public class SaTokenConfig implements WebMvcConfigurer {
|
||||
|
||||
private final TenantInterceptor tenantInterceptor;
|
||||
|
||||
@Bean
|
||||
public StpLogic getStpLogicJwt() {
|
||||
|
@ -40,4 +47,10 @@ public class SaTokenConfig implements WebMvcConfigurer {
|
|||
return new PlusSaTokenDao();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addWebRequestInterceptor(tenantInterceptor);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
<groupId>cc.iotkit</groupId>
|
||||
<artifactId>iot-common-satoken</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
@ -39,6 +43,7 @@
|
|||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
</configuration>
|
||||
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package cc.iotkit.common.tenant.dao.entiry;
|
||||
|
||||
public interface TenantAware {
|
||||
void setTenantId(String tenantId);
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package cc.iotkit.common.tenant.interceptor;
|
||||
|
||||
import cc.iotkit.common.tenant.util.TenantContext;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.context.request.WebRequest;
|
||||
import org.springframework.web.context.request.WebRequestInterceptor;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class TenantInterceptor implements WebRequestInterceptor {
|
||||
|
||||
public static final String TENANT_ID = "TENANT-ID";
|
||||
|
||||
|
||||
@Override
|
||||
public void preHandle(WebRequest request) {
|
||||
if (request.getHeader(TENANT_ID) != null) {
|
||||
String tenantId = request.getHeader(TENANT_ID);
|
||||
TenantContext.setTenantId(tenantId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHandle(WebRequest request, ModelMap model) {
|
||||
TenantContext.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompletion(WebRequest request, Exception ex) {
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package cc.iotkit.common.tenant.listener;
|
||||
|
||||
import cc.iotkit.common.tenant.dao.entiry.TenantAware;
|
||||
import cc.iotkit.common.tenant.util.TenantContext;
|
||||
|
||||
import javax.persistence.PrePersist;
|
||||
import javax.persistence.PreRemove;
|
||||
import javax.persistence.PreUpdate;
|
||||
|
||||
public class TenantListener {
|
||||
@PreUpdate
|
||||
@PreRemove
|
||||
@PrePersist
|
||||
public void setTenant(TenantAware entity) {
|
||||
final String tenantId = TenantContext.getTenantId();
|
||||
entity.setTenantId(tenantId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package cc.iotkit.common.tenant.util;
|
||||
|
||||
public class TenantContext {
|
||||
private TenantContext() {
|
||||
}
|
||||
|
||||
private static final ThreadLocal<String> tenantInfoHolder = new InheritableThreadLocal<>();
|
||||
|
||||
public static void setTenantId(String tenantId) {
|
||||
tenantInfoHolder.set(tenantId);
|
||||
}
|
||||
|
||||
public static String getTenantId() {
|
||||
return tenantInfoHolder.get();
|
||||
}
|
||||
|
||||
public static void clear() {
|
||||
tenantInfoHolder.remove();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue