21.06.08 TIL BOOT+JPA - 로그인 처리[Security](KIMGRAM+블로그 공통)

김정훈·2021년 6월 8일
0

📌 BOOT+JPA KIMGRAM * 블로그 만들기(공통 : 로그인)

GitHub 주소 : https://github.com/JHKIMS/SpringBoot_Jpa_Blog https://github.com/JHKIMS/BOOT_KIMSGRAM.git

Commit : 회원가입+해쉬+로그인+글쓰기+글목록

🌠 로그인 과정

2번째 그림은 SecurityConfig파일인데, 코드 윗 부분에 antMatchers부분을 제외한 모든 경로는 인증이 필요하기 때문에, auth/loginForm부분으로 이동시킨다.

다음 그림은 UserController의 loginForm()메소드 부분이다.
이곳이 /auth/loginForm로 매핑되어있는데, 이 함수는 user/loginForm을 리턴한다.

이건 yml파일인데 이 설정 덕분에(?) 리턴한 user/loginForm
/WEB-INF/views/user/loginForm.jsp 이쪽으로 향하게 된다.

그럼 다음 그림처럼 loginForm.jsp로 향하게 된다.
그리고 이 그림의 빨간 네모 박스처럼 /auth/loginProc로 향하게 된다.
/auth/loginProc 어디서 본 기억이 있을 것이다.
!!! 바로 SecurityConfig 파일이다. SecurityConfig 파일로 다시 돌아가보자.

loginProcessingUrl 부분을 보면 위와 동일하게 /auth/loginProc이 걸려있는 것을 볼 수 있다.
주석 부분을 보면 알겠지만, 스프링 시큐리티가 로그인 정보를 가로채서 대신 확인해주고 로그인을 시켜준다.
내가 할 거는? 없다! → Spring Security의 마법이다.


🌠 그리고 이렇게 로그인한 후에는 세션의 사용법은?

이 부분에서 우리는 PrincipalDetail라는 클래스를 사용하게 된다.
PrincipalDetail은 스프링 시큐리티가 로그인 요청을 가로채, 로그인을 진행하고
완료하면 UserDetails타입의 객체를, 스프링 시큐리티의 고유한 세션저장소에 저장을 해준다.
저장소에 저장되는 것이 이 PrincipalDetail이 저장이 된다.

그리고 이제 이렇게 만들어진 세션을 사용하는 방법

지금은 이렇게 사용할 수 있지만, 원래는 세션을 꺼내는 것이 매우 복잡했다.(다음 그림 참조)
그냥 복잡하고 위에 방법으로 세션을 쓰는 것이 가장 바람직한 방법이다.

JSP에서 세션을 찾아서 유지시키는 방법. 그림의 var변수이름은 자신이 원하는 대로 정하면 된다.

➽ 우선은 비교적 간단하게 지금까지 로그인부분 까지 구현을 완료했다.
다음 포스팅은 게시글 작성, 상세보기, 목록을 할 예정이고, 이번 포스팅에서 로그인과 세션 사용법을 알아봤는데, 세션을 유지하는 것에 대해서도 한 번 공부해봐야겠다.

profile
WebDeveloper

0개의 댓글