๐ฑ ์ ์ฒด์ ์ธ ๋ก๊ทธ์์ ๋ก์ง
์ํ๋ฆฌํฐ๋ฅผ ํตํด ๋ก๊ทธ์์์ ํ๊ฒ ๋๋ฉด
- ์ธ์ ๋ฌดํจํ
- ์ธ์ฆ ํ ํฐ ์ญ์
- ์ญ์ ํ ์ฟ ํค ์ ๋ณด๊ฐ ์๋ค๋ฉด ์ญ์
- ๋ก๊ทธ์ธ ํ์ด์ง ๋ฆฌ๋ค์ด๋ ํธ
ํด๋น ์์ ์ ์ํํ๊ฒ ๋๋ค.
๋ก๊ทธ์์ API
- logout : ๋ก๊ทธ์์ ๊ธฐ๋ฅ ํ์ฑํ
- logoutUrl : ๋ก๊ทธ์์ url ์ ๋ณด ์ ๋ฌ (form ํ๊ทธ์์ url ๋ณ๊ฒฝ ๊ฐ๋ฅ)
- logoutSuccessUrl : ๋ก๊ทธ์์ ์ฑ๊ณตํ ๋ ์ด๋ํ url
- deleteCookies : ์ฟ ํค๋ฅผ ๋ฐ๊ธํ์ ๊ฒฝ์ฐ์ ์ญ์ ๊ฐ ํ์ํ๋ฐ ์ฟ ํค๋ฅผ ์ญ์ ํจ
- remember-me ๊ฐ์ ๊ฒฝ์ฐ๋ ๋์ค์ ๋ก๊ทธ์ธํ ๋ remember-me ์ธ์ฆ์ด ์๋๋ฐ ์๋ฒ์์ ๋ง๋ ์ฟ ํค๋ฅผ ์ญ์ ํ๋ ๊ฒ
- logoutSuccessHandler : ๋ก๊ทธ์์์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๊ณ ํ์ ์์ ์ ํ๋ ํธ๋ค๋ฌ
๋ก๊ทธ์์ filter
- ๋ก๊ทธ์์์ด ์์๋๋ฉด LogoutFilter๋ก ์ด๋
- AntPathRequestMatcher์ url์ด๋ ์์ฒญ url์ด ๋ง๋๋ค๋ฉด Authentication์ด๋, ์๋๋ผ๋ฉด doFilter์ด๋
- ์ธ์ฆ ๊ฐ์ฒด๋ฅผ ๋ด๊ณ ์๋ SecurityContext๋ก๋ถํฐ ์ธ์ฆ ๊ฐ์ฒด๋ฅผ ๊บผ๋ด์ค๊ณ LogoutHandler๋ก ๋๊ฒจ์ค
- SecurityContextLogoutHandler
- ์ธ์ ๋ฌดํจํ
- ์ฟ ํค ์ญ์
- SecurityContextHolder.clearContext ์๋
- ์ธ์ฆ ๊ฐ์ฒด null์ฒ๋ฆฌ
- Get ๋ฐฉ์์ผ๋ก ํ ๋๋ ์ปจํธ๋กค๋ฌ์์ ๋ฐ๋ก ์ฌ์ฉ
- ์ฑ๊ณตํ๋ฉด SimpleUrlLogoutSuccessHandler๋ฅผ ํตํด ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋
โ ๋ก๊ทธ์์์ ๊ธฐ๋ณธ์ ์ผ๋ก POST๋ฐฉ์์ผ๋ก ํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํด์ POST ๋ฐฉ์์ ์ฌ์ฉํด์ ํผ์ submit ํ๋๋ฐ submit์ ์ธ์ํ์ง ๋ชปํด์ ๋ญ๊ฐ ํ๊ณ ๋ณด๋๊น formํ๊ทธ ์์ formํ๊ทธ์์๋ค.
์ฐพ์๋ณด๋๊น form์ ์ค์ฒฉ์ผ๋ก ์ฌ์ฉํ์ง ๋ชปํ๋ค๊ณ ํด์!! ๋ก๊ทธ์์ ๋ฒํผ์ ์ฒซ ๋ฒ์งธ formํ๊ทธ ์์ ๋ฃ๊ณ ๋ค๋ฅธ formํ๊ทธ๋ ๊ทธ๋ค์ ์์์ ๋๊ณ ํด๋ฆญํ๋ฉด ๋ค์ formํ๊ทธ๊ฐ submit ๋๋๋ก ๋ง๋ค์๋ค.!!!
ํด๋น ๊ธ์ ์ธํ๋ฐ์ ์คํ๋ง์ํ๋ฆฌํฐ-Spring Boot ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๋ Spring Security๋ฅผ ๋ณด๊ณ ์์ฑํ ๊ธ์ ๋๋ค.