3
3
import codeview .main .auth .handler .OAuth2SuccessHandler ;
4
4
import codeview .main .auth .jwt .TokenAuthenticationFilter ;
5
5
import codeview .main .auth .jwt .TokenExceptionFilter ;
6
+ import codeview .main .auth .jwt .TokenProvider ;
6
7
import codeview .main .auth .service .CustomOAuth2UserService ;
7
8
import lombok .RequiredArgsConstructor ;
8
9
import org .springframework .context .annotation .Bean ;
14
15
import org .springframework .security .config .annotation .web .configurers .AbstractHttpConfigurer ;
15
16
import org .springframework .security .config .annotation .web .configurers .HeadersConfigurer ;
16
17
import org .springframework .security .config .http .SessionCreationPolicy ;
17
- import org .springframework .security .oauth2 .client .web .OAuth2LoginAuthenticationFilter ;
18
18
import org .springframework .security .web .SecurityFilterChain ;
19
19
import org .springframework .security .web .authentication .UsernamePasswordAuthenticationFilter ;
20
20
import org .springframework .security .web .util .matcher .AntPathRequestMatcher ;
21
+ import org .springframework .web .cors .CorsConfiguration ;
22
+ import org .springframework .web .cors .UrlBasedCorsConfigurationSource ;
23
+ import org .springframework .web .filter .CorsFilter ;
24
+
25
+ import java .util .Arrays ;
21
26
22
27
@ RequiredArgsConstructor
23
28
@ Configuration
26
31
public class SecurityConfig {
27
32
28
33
private final CustomOAuth2UserService customOAuth2UserService ;
29
- private final OAuth2SuccessHandler oAuth2SuccessHandler ;
30
34
private final TokenAuthenticationFilter tokenAuthenticationFilter ;
35
+ private final TokenProvider tokenProvider ;
31
36
32
37
@ Bean
33
38
public WebSecurityCustomizer webSecurityCustomizer () {
@@ -38,7 +43,7 @@ public WebSecurityCustomizer webSecurityCustomizer() {
38
43
public SecurityFilterChain securityFilterChain (HttpSecurity http ) throws Exception {
39
44
http
40
45
.csrf (AbstractHttpConfigurer ::disable )
41
- .cors (AbstractHttpConfigurer :: disable )
46
+ .cors (cors -> cors . configurationSource ( corsConfigurationSource ()) )
42
47
.httpBasic (AbstractHttpConfigurer ::disable )
43
48
.formLogin (AbstractHttpConfigurer ::disable )
44
49
.logout (AbstractHttpConfigurer ::disable )
@@ -56,7 +61,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
56
61
57
62
.oauth2Login (oauth -> oauth
58
63
.loginPage ("/login" )
59
- .successHandler (oAuth2SuccessHandler )
64
+ .successHandler (new OAuth2SuccessHandler ( tokenProvider ) )
60
65
.userInfoEndpoint (userInfo -> userInfo
61
66
.userService (customOAuth2UserService )))
62
67
.addFilterBefore (tokenAuthenticationFilter , UsernamePasswordAuthenticationFilter .class )
@@ -67,4 +72,29 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
67
72
.accessDeniedHandler (new CustomAccessDeniedHandler ()));
68
73
return http .build ();
69
74
}
75
+
76
+ @ Bean
77
+ public CorsFilter corsFilter () {
78
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource ();
79
+ CorsConfiguration config = new CorsConfiguration ();
80
+ config .setAllowCredentials (true );
81
+ config .setAllowedOrigins (Arrays .asList ("http://localhost:3000" ));
82
+ config .setAllowedMethods (Arrays .asList ("GET" , "POST" , "PUT" , "DELETE" ));
83
+ config .setAllowedHeaders (Arrays .asList ("*" ));
84
+ source .registerCorsConfiguration ("/**" , config );
85
+ return new CorsFilter (source );
86
+ }
87
+
88
+ @ Bean
89
+ public UrlBasedCorsConfigurationSource corsConfigurationSource () {
90
+ CorsConfiguration config = new CorsConfiguration ();
91
+ config .setAllowCredentials (true );
92
+ config .setAllowedOrigins (Arrays .asList ("http://localhost:3000" ));
93
+ config .setAllowedMethods (Arrays .asList ("GET" , "POST" , "PUT" , "DELETE" ));
94
+ config .setAllowedHeaders (Arrays .asList ("*" ));
95
+
96
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource ();
97
+ source .registerCorsConfiguration ("/**" , config );
98
+ return source ;
99
+ }
70
100
}
0 commit comments