25๊ฐ ๋ง์ง๋ง ํ
์คํธ์์ ์ค๋ฅ
SecurityConfig.java ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํด๋ณด์ธ์.์ํ๋ฆฌํฐ ๋ฒ์ ์ด ์
๊ทธ๋ ์ด๋ ๋๋ฉด์ AuthenticationManager ๋ฅผ ๋ฐ๋ก ๋นผ์ @Bean ์ ๋ง๋ค์ด์ผ null ์ค๋ฅ๊ฐ ์์ด์ง๋ค์. @Configuration @EnableWebSecurity // ์คํ๋ง ์ํ๋ฆฌํฐ ํํฐ๊ฐ ์คํ๋ง ํํฐ์ฒด์ธ์ ๋ฑ๋ก public class SecurityConfig { @Autowired private CorsConfig corsConfig; @Bean public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception { return authenticationConfiguration.getAuthenticationManager(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http, AuthenticationManager authenticationManager) throws Exception { //AuthenticationManager authenticationManager = http.getSharedObject(AuthenticationManager.class); http.csrf(AbstractHttpConfigurer::disable); http .sessionManagement(sc -> sc.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // ์ธ์
์ ์ฌ์ฉํ์ง ์์. .addFilter(corsConfig.corsFilter()) // @CrossOrigin(์ธ์ฆX), ์ํ๋ฆฌํฐ ํํฐ์ ๋ฑ๋ก ์ธ์ฆ(O) --> ๋ชจ๋ ์์ฒญ ํ์ฉ. //.addFilterBefore(new MyFilter3(), SecurityContextPersistenceFilter.class) // ---> 22, 23๊ฐ ํ
์คํธ์ฉ. .addFilter(new JwtAuthenticationFilter(authenticationManager)) // AuthenticationManager ---> 24๊ฐ ํ
์คํธ .formLogin((form)-> form.disable()) .httpBasic((basic)-> basic.disable()) /* --------- security ์ต์ ๋ฒ์ ์์๋ ๊ถํ ์ ์ฉ์ ROLE_ ์ฐ์ง ์์. ์ฆ, USER, ADMIN, MANAGER๋ก ์จ์ผํจ ---------- */ .authorizeHttpRequests(authorize -> authorize .requestMatchers("/static**", "/logout/**", "/login/**").permitAll() .requestMatchers("/api/v1/user/**").authenticated() // /user๋ผ๋ url๋ก ๋ค์ด์ค๋ฉด ์ธ์ฆ์ด ํ์ํ๋ค. .requestMatchers("/api/v1/manager/**").hasAnyRole("MANAGER", "ADMIN") // manager์ผ๋ก ๋ค์ด์ค๋ MANAGER ์ธ์ฆ ๋๋ ADMIN์ธ์ฆ์ด ํ์ํ๋ค๋ ๋ป์ด๋ค. .requestMatchers("/api/v1/admin/**").hasRole("ADMIN") // //admin์ผ๋ก ๋ค์ด์ค๋ฉด ADMIN๊ถํ์ด ์๋ ์ฌ๋๋ง ๋ค์ด์ฌ ์ ์์ .anyRequest().permitAll() // ๊ทธ๋ฆฌ๊ณ ๋๋จธ์ง url์ ์ ๋ถ ๊ถํ์ ํ์ฉํด์ค๋ค. ); return http.build(); } }