-
[이슈정리] Session 으로 로그인 정보 가져오기IT/Spring 2025. 6. 12. 12:55
※ 상세이슈
Spring boot + Thymeleaf + Spring Security 사용시,
로그인 세션값을 html에서 보여주려 할때, 값을 null로 인식해서 화면이 열리지 않는 이슈가 발생됨.→ 서치시 Thymeleaf에서 값을 가져올때 EL표현식으로 컨트롤러에 설정된 Session값을 가져올때는 ${m.id} 같은 Model 을 호출할때 쓰는 EL 표현식이 아닌 ${session.m.id}) 으로 불러와야 값이 보여진다.
발생과정
BookController : 세션값을 해당 컨트롤러를 통해 가져온다. listBook.html : 로그인 후 해당 페이지에 접근 했을때 로그인 계정의 id, name을 가져온다. 서버가동 후 로그인 실행시,
고객 정보는 잘 가져오고 있음
근대 에러발생..
문구를 보니 익셉션 처리를 하는데.. 왠지 EL 표현식의 이슈 같다.
처리 결과
현재 html에서 타임리프로 세션값을 가져오게 되어 있고,
가져오는 표현식이 Model에 담긴 값을 가져오는 방식으로 되어있다.
Session에 담긴 값을 가져오기 위해서는 표현식을 바꿔야함.
listBook.html : 타임리프를 설정후 세션 값을 가져올때는 EL 표현식을 바꿔줘야한다. 로그인 완료후 넘어간 페이지에 세션정보가 잘 노출 되고 있음 추가로 더 서치해보니,
세션값을 가져올수 있는 방법이 3가지 정도로 추려졌고
내가 작업한건 최종적으로는 session.setAttribute() 이지만
현재 Spring Security 환경에서 작업 하고 있기 때문에
#authentication.principal로 작업하는게 좀 더 최적화 된 방법으로 판단된다.
[비교] model.addAttribute() vs session.setAttribute() vs #authentication.principal
저장 위치 Request Scope (1번 요청) Session Scope (브라우저 유지) Security Context (세션 + 보안 관리) 유지 시간 요청-응답 1번 동안 브라우저 닫기 전까지 (로그아웃 전까지) 브라우저 닫기 전까지 (로그아웃 전까지) 용도 화면 렌더링 데이터 전달 로그인 상태, 장바구니 등 상태유지 로그인 정보 유지 Thymeleaf
접근법${변수명} ${session.변수명} ${#authentication.principal.필드} 코드 작성 필요 컨트롤러마다 매번 필요 한 번만 넣으면 지속 사용 가능 Security 자동 관리 (한 번 설정으로 지속 사용) 주 사용 예시 리스트, 상세보기, 검색 결과 등 장바구니, 임시 저장 데이터 등 로그인 사용자 정보 장점 MVC표준에 맞음, 깔끔함 상태 유지 용이 보안성 최고, 전역 접근 가능, 실무표준 단점 재요청시 재지정 필요 메모리 오래 차지, 세션 관리 신경 써야 설정 복잡 (초기설정만), Principal 설계 필요 사용빈도 ★★★★★ (전달용) ★★★ (상태유지용) ★★★★★ (로그인정보 유지) 반응형'IT > Spring' 카테고리의 다른 글
[이슈정리] 패스워드 암호화 시 매칭 오류 (0) 2025.06.13