Skip to content

Commit d663b39

Browse files
committed
优化CORS跨域实现
优化获取currentUserId代码
1 parent 618f5ea commit d663b39

File tree

6 files changed

+51
-36
lines changed

6 files changed

+51
-36
lines changed

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/GrayServerHolder.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package cn.springcloud.gray.server;
22

33
import cn.springcloud.gray.server.module.user.UserModule;
4+
import cn.springcloud.gray.server.oauth2.Oauth2Service;
45

56
public class GrayServerHolder {
67

78
private static UserModule userModule;
9+
private static Oauth2Service oauth2Service;
810

911

1012
public static UserModule getUserModule() {
@@ -14,4 +16,12 @@ public static UserModule getUserModule() {
1416
public static void setUserModule(UserModule userModule) {
1517
GrayServerHolder.userModule = userModule;
1618
}
19+
20+
public static Oauth2Service getOauth2Service() {
21+
return oauth2Service;
22+
}
23+
24+
public static void setOauth2Service(Oauth2Service oauth2Service) {
25+
GrayServerHolder.oauth2Service = oauth2Service;
26+
}
1727
}

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/GrayServerInitializer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import cn.springcloud.gray.event.server.GrayEventObserver;
55
import cn.springcloud.gray.event.server.GrayEventTrigger;
66
import cn.springcloud.gray.server.module.user.UserModule;
7+
import cn.springcloud.gray.server.oauth2.Oauth2Service;
78
import cn.springcloud.gray.utils.SpringApplicationContextUtils;
89
import lombok.extern.slf4j.Slf4j;
910
import org.springframework.beans.BeansException;
@@ -21,6 +22,7 @@ public class GrayServerInitializer implements ApplicationContextAware, Initializ
2122
@Override
2223
public void afterPropertiesSet() throws Exception {
2324
GrayServerHolder.setUserModule(SpringApplicationContextUtils.getBean("userModule", UserModule.class));
25+
GrayServerHolder.setOauth2Service(SpringApplicationContextUtils.getBean("oauth2Service", Oauth2Service.class));
2426

2527
bindGrayEventObservers();
2628
}

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/configuration/DBStorageConfiguration.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import cn.springcloud.gray.server.module.user.jpa.JPAAuthorityModule;
2323
import cn.springcloud.gray.server.module.user.jpa.JPAServiceManageModule;
2424
import cn.springcloud.gray.server.module.user.jpa.JPAUserModule;
25-
import cn.springcloud.gray.server.oauth2.Oauth2Service;
2625
import cn.springcloud.gray.server.service.*;
2726
import org.springframework.beans.factory.annotation.Autowired;
2827
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -89,8 +88,8 @@ public GrayServiceIdFinder grayServiceIdFinder(
8988

9089
@Bean
9190
@ConditionalOnMissingBean
92-
public UserModule userModule(UserService userService, Oauth2Service oauth2Service) {
93-
return new JPAUserModule(userService, oauth2Service);
91+
public UserModule userModule(UserService userService) {
92+
return new JPAUserModule(userService);
9493
}
9594

9695
@Bean

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/configuration/WebConfiguration.java

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,53 +4,59 @@
44
import cn.springcloud.gray.server.resources.interceptor.AuthorityInterceptor;
55
import cn.springcloud.gray.server.resources.interceptor.NamespaceInterceptor;
66
import org.springframework.beans.factory.annotation.Autowired;
7-
import org.springframework.boot.web.servlet.FilterRegistrationBean;
8-
import org.springframework.context.annotation.Bean;
97
import org.springframework.context.annotation.ComponentScan;
108
import org.springframework.context.annotation.Configuration;
119
import org.springframework.context.annotation.Import;
12-
import org.springframework.web.cors.CorsConfiguration;
13-
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
14-
import org.springframework.web.filter.CorsFilter;
10+
import org.springframework.web.servlet.config.annotation.CorsRegistry;
1511
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
16-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
12+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
1713

1814
/**
1915
* Created by saleson on 2017/7/5.
2016
*/
2117
@Configuration
2218
@ComponentScan({"cn.springcloud.gray.server.resources"})
2319
@Import(Swagger2Configuration.class)
24-
public class WebConfiguration extends WebMvcConfigurerAdapter {
20+
public class WebConfiguration implements WebMvcConfigurer {
2521

2622

2723
@Autowired
2824
private AuthorityModule authorityModule;
2925

30-
@Bean
31-
public FilterRegistrationBean filterRegistrationBean() {
32-
33-
CorsConfiguration corsConfiguration = new CorsConfiguration();
34-
corsConfiguration.setAllowCredentials(true);
35-
corsConfiguration.addAllowedOrigin("*");
36-
corsConfiguration.addAllowedHeader("*");
37-
corsConfiguration.addAllowedMethod("*");
38-
corsConfiguration.setMaxAge(3600l);
39-
corsConfiguration.addExposedHeader("X-Total-Count");
40-
corsConfiguration.addExposedHeader("X-Pagination");
41-
UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
42-
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
43-
new CorsFilter(urlBasedCorsConfigurationSource);
44-
45-
FilterRegistrationBean filterRegistrationBean =
46-
new FilterRegistrationBean(new CorsFilter(urlBasedCorsConfigurationSource));
47-
filterRegistrationBean.addUrlPatterns("/*");
48-
return filterRegistrationBean;
26+
// @Bean
27+
// public FilterRegistrationBean filterRegistrationBean() {
28+
//
29+
// CorsConfiguration corsConfiguration = new CorsConfiguration();
30+
// corsConfiguration.setAllowCredentials(true);
31+
// corsConfiguration.addAllowedOrigin("*");
32+
// corsConfiguration.addAllowedHeader("*");
33+
// corsConfiguration.addAllowedMethod("*");
34+
// corsConfiguration.setMaxAge(3600l);
35+
// corsConfiguration.addExposedHeader("X-Total-Count");
36+
// corsConfiguration.addExposedHeader("X-Pagination");
37+
// UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
38+
// urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
39+
//
40+
// FilterRegistrationBean filterRegistrationBean =
41+
// new FilterRegistrationBean(new CorsFilter(urlBasedCorsConfigurationSource));
42+
// filterRegistrationBean.addUrlPatterns("/*");
43+
// return filterRegistrationBean;
44+
// }
45+
46+
47+
@Override
48+
public void addCorsMappings(CorsRegistry registry) {
49+
registry.addMapping("/**")
50+
.allowedHeaders("*")
51+
.allowedMethods("*")
52+
.allowedOrigins("*")
53+
.allowCredentials(true)
54+
.exposedHeaders("X-Total-Count", "X-Pagination")
55+
.maxAge(3600l);
4956
}
5057

5158
@Override
5259
public void addInterceptors(InterceptorRegistry registry) {
53-
super.addInterceptors(registry);
5460
registry.addInterceptor(new NamespaceInterceptor(authorityModule))
5561
.addPathPatterns("/**");
5662
registry.addInterceptor(new AuthorityInterceptor(authorityModule)).addPathPatterns("/**");

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/module/user/jpa/JPAUserModule.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import cn.springcloud.gray.server.module.user.UserModule;
44
import cn.springcloud.gray.server.module.user.domain.UserInfo;
55
import cn.springcloud.gray.server.module.user.domain.UserQuery;
6-
import cn.springcloud.gray.server.oauth2.Oauth2Service;
76
import cn.springcloud.gray.server.service.UserService;
7+
import cn.springcloud.gray.server.utils.SessionUtils;
88
import org.apache.commons.lang3.ArrayUtils;
99
import org.springframework.data.domain.Page;
1010
import org.springframework.data.domain.Pageable;
@@ -13,11 +13,9 @@
1313

1414
public class JPAUserModule implements UserModule {
1515

16-
private Oauth2Service oauth2Service;
1716
private UserService userService;
1817

19-
public JPAUserModule(UserService userService, Oauth2Service oauth2Service) {
20-
this.oauth2Service = oauth2Service;
18+
public JPAUserModule(UserService userService) {
2119
this.userService = userService;
2220
}
2321

@@ -68,7 +66,7 @@ public Page<UserInfo> query(UserQuery userQuery, Pageable pageable) {
6866

6967
@Override
7068
public String getCurrentUserId() {
71-
return oauth2Service.getUserPrincipal();
69+
return SessionUtils.currentUserId();
7270
}
7371

7472
@Override

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/utils/SessionUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
public class SessionUtils {
1515

1616
public static String currentUserId() {
17-
return GrayServerHolder.getUserModule().getCurrentUserId();
17+
return GrayServerHolder.getOauth2Service().getUserPrincipal();
1818
}
1919

2020
public static String currentNamespace() {

0 commit comments

Comments
 (0)