Acegi 사용시 사용자 정보 접근하기
Acegi를 사용하여 인증을 거치면, 사용자 아이디(principal)가 session에 ACEGI_SECURITY_LAST_USERNAME 라는 속성으로 저장됩니다.
따라서, 뷰에서는 EL을 사용하여 ${ACEGI_SECURITY_LAST_USERNAME} 이런식으로 접근할 수 있으며, 컨트롤러 계층에서는
String loginId = (String) request.getSession().getAttribute("ACEGI_SECURITY_LAST_USERNAME");
이런식으로 접근할 수 있습니다.
HttpServletRequest 변수에 직접 전근할 수 없는 계층에서도 현재 로그인 되어 있는 사용자 정보에 접근할 수 있습니다.
String username = SecurityContextHolder.getContext().getAuthentication().getName();
이런 식으로 SecurityContextHolder를 통해서 현재 로그인 되어 있는 사용자의 정보를 가져올 수 있습니다.