Posts
Q&A
Spring Boot ์ต์ 3.XX ๋ฒ์ Security ์ค์ ๊ณต์ ๋๋ฆฝ๋๋ค.
๊ฐ์ฌํฉ๋๋ค! pattern /** ์ ๋ชจ๋ ๊ฒฝ๋ก์ ๋ํด์ ํ์ฉํด์ฃผ๋๊ฒ ์กฐ๊ธ ์์ฌ์ด์ h2 ์ ๋ํด์๋ง ์ถ๊ฐ๋ก ์ ์ฉ๋๊ฒ ์ฐพ์๋ดค๋๋ฐ์.h2์ ๊ฒฝ์ฐ pattern "/h2-console" ๋ฑ๋ก์ ํด๋ 403์ผ๋ก ๋จ๋๋ฐ PathRequest.toH2Console() ์ ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ฐพ์์ฃผ๋ค์.@Bean protected SecurityFilterChain config(HttpSecurity http) throws Exception { http.csrf().disable(); http.headers().frameOptions().disable(); http.authorizeHttpRequests(authorize -> authorize .requestMatchers("/users/**").permitAll() .requestMatchers(PathRequest.toH2Console()).permitAll() ); return http.build(); }(์ฐธ๊ณ ์๋ฃ:https://docs.spring.io/spring-boot/docs/current/reference/html/data.html#data.sql.h2-web-console.custom-path)
- 18
- 7
- 9.9K
Q&A
์ธํฐํ์ด์ค ์ฌ์ฉ๋ฒ ์ ๊ทผ๋ฐฉ์์ ๋ํ ์๋ฌธ์ ์ ๋๋ค!
์์ ๋ต๋ณ์ ์ด์ด์ ์ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ป๊ฒ ๊ถ๊ธ์ฆ์ ๋ํ ํด๋ต์ ์ฐพ๋ ๊ฐ์ ๋ํด ์ค๋ช ํด์ฃผ๊ณ ์ถ๋ค์. ์ง๋ฌธํ์ ๋๋ก ์ธํฐํ์ด์ค์ ํจ์์ ์ธ๋ถ๋ง ๋ณด๊ณ ๋ ์ด๋ค ๋์์ ํจ์๋ฅผ ๊ตฌํํด์ผํ ์ง ๋ชจ๋ฅผ ์ ์์ต๋๋ค. ์๋ฐ์ ํ์คํจ์๋ค์ ์ดํด๋ฅผ ๋๊ธฐ์ํ ์ฃผ์์ด๋ ๋ ํผ๋ฐ์ค๊ฐ ๊ต์ฅํ ์น์ ํ๊ฒ ์จ์ ธ์์ต๋๋ค. ์ด๊ฑธ ์ฝ์ด๋ณด์๋ฉด ๋ฉ๋๋ค. Filter ์ธํฐํ์ด์ค์ ์จ์ ธ์๋ ๊ณต์ ์ฃผ์์ผ๋ก ์ง๋ฌธ์ ์๋ ๋ด์ฉ์ ์ ๋ถ ํด๊ฒฐํด ๋ณด๊ฒ ์ต๋๋ค. 1. Filter.super.init(), Filter.super.destroy() ๋ ๋ญ์ง? init(), destroy()๋ฅผ ๊ตฌํํ๋๋ Filter.super.init(), Filter.super.destroy()๋ฅผ IDE๊ฐ ์๋์ผ๋ก ํธ์ถํ์ต๋๋ค. ๋ํดํธ ํจ์๋ก ์จ์ ธ์๊ธฐ ๋๋ฌธ์ด์ฃ . '์ด๊ฑธ ์ ๋ํดํธ ํจ์๋ก ์ผ์๊น? ๋ํดํธ๋ก ์ ์ํด ๋์ ํจ์ ๋ด์ฉ์ด ๋ญ๊น?' ์๋๋ฅผ ์๊ณ ์ถ์ผ๋ฉด Filter ์ธํฐํ์ด์ค๋ฅผ ์ด์ด๋ณด๋ฉด ๋ฉ๋๋ค. ์ด์ด๋ณด๋ init(), destroy()์ ํจ์ ๋ด์ฉ์ ๊ณต๋ฐฑ์ ๋๋ค. ์ฃผ์์๋ "The default implementation is a NO-OP." ์ฆ ๊ธฐ๋ณธ ๊ตฌํ์ ์๋ฌด๋ฐ ์์ ๋ ํ์ง ์๋๋ค๋ ๊ฒ๋๋ค. Filter.super.init(); ์ ์ง์๋ ์๊ด์๊ฒ ์ฃ ? ์๋๋ Filter๋ฅผ ๊ตฌํํ ๋ init()์ด๋ destroy()๋ฅผ ์ฌ์ฉํ์ง ์์๊ฑฐ๋ฉด ๊ท์ฐฎ๊ฒ override ํ์ง ์์๋ ๋๋๋ก ์ค์ ํด ๋์ ๊ฒ์ ๋๋ค. ๊ฐ์์์ ๋ง๋ LogFilter์์ init()์ด๋ destroy() ํจ์๋ฅผ ์ง์๋ณด์๋ฉด ์ ์์๋ํ๋๊ฒ์ ์ ์ ์์๊ฒ๋๋ค. 2. HttpServletRequest๋ก ๋ค์ด ์บ์คํ ์ ์ด๋ป๊ฒ ์๊น? ServletRequest ๋ง์ผ๋ก๋ ์ํ๋ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์์์ต๋๋ค. ๊ทธ๋์, ServletRequest ์ธํฐํ์ด์ค์ ์ฃผ์์ ์ดํด๋ดค์ต๋๋ค. 'Interfaces that extend ServletRequest can provide additional protocol-specific data (for example, HTTP data is provided by javax.servlet.http.HttpServletRequest.') HTTP ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ๊ณ ์ ํ๋ฉด ServletRequest๋ฅผ ์์ํ๋ HttpServletRequest๋ฅผ ์ฌ์ฉํ๋๋๋ค. ๋, Filter์ doFilter() ํจ์์ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์์ด ์์ต๋๋ค. "Optionally wrap the request object with a custom implementation to filter content or headers for input filtering". request ๊ฐ์ฒด๋ฅผ ํ์์ ๋ฐ๋ผ ์บ์คํ ํด์ ์ฐ๋๋๋ค. ์ฆ, HTTP ์์ฒญ ์ ๋ณด๋ค์ ์ด์ฉํ ํ์๊ฐ ์์ผ๋ฉด HttpServletRequest๋ฅผ ์ฐ๋ฉด ๋๊ฒ ๋ค์. ------------------------- ์ ๋ ๋ฐฐ์ฐ๋ ์ ์ฅ์ด๋ผ ์ฌ์ ์ ๋ชจ๋ฅด๋ ๋ด์ฉ์ด์์ง๋ง ์ฃผ์์ ์ฝ์ด๋ด์ผ๋ก์จ ๊ถ๊ธ์ฆ์ ํด๊ฒฐํด ๋ณผ ์ ์์์ต๋๋ค. ๊ฐ์๋ฅผ ๋ณด๊ณ ์ถ๊ฐ์ ์ธ ๊ถ๊ธ์ฆ์ด ์๊ธฐ๊ฑฐ๋ ์ฌ์ฉ๋ฒ์ ์๊ณ ์ถ์ผ๋ฉด ๊ณต์ ๋ ํผ๋ฐ์ค๋ฅผ ์ฐธ๊ณ ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค์.
- 7
- 2
- 362