해당 포스팅은 개발자 유미님 유튜브 및 노션 내용을 기반으로 작성하였습니다.
파이널 프로젝트 때, Session 로그인을 구현하면서 패스워드를 암호화하는 Bcryptpasswordencoder를 사용하였습니다. 이 포스팅을 기점으로 Spring Security에 대해서 작성해볼까 합니다.
우선, 모든 Request의 경우 Servlet Container를 거치고, 그 안에서 Filter를 거치게 됩니다. 이에 대한 자세한 내용은 아래 링크에 정리해두었습니다.
https://velog.io/@red-sprout/WEB-%EC%9B%B9-%EC%84%9C%EB%B2%84%EC%99%80-WAS
이 때 login의 경우(검은색 화살표) 모든 접근을 허용합니다. 접근 허용후 컨트롤러를 거쳐 로그인 결과 성공시 Session에 유저가 등록이 되게 됩니다.
다른 요청들의 경우(빨간색 화살표) 우선 Session에서 유저 정보가 있는지를 확인합니다. 있으면 그 정보를 가지고 Filter를 통과하게 되는데, 이 때 Controller에 도달하기 전 Spring Security 차원에서 검증을 합니다. 예를 들어, 검증 사례는 다음과 같습니다.