JAVAIARY

Spring Security - 6. JSP에서 시큐리티 사용하기 본문

lectureNote/SPRING

Spring Security - 6. JSP에서 시큐리티 사용하기

shiherlis 2022. 12. 21. 14:18

1. taglib 추가

<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>

2. 불러올 정보 <sec:authentication> 태그로 불러오기 

admin.jsp

<body>
	  <h1>/sample/admin page</h1>
	  <p>principal : <sec:authentication property="principal"/></p>
	  <p>MemberVO : <sec:authentication property="principal.member"/></p>
	  <p>사용자이름 : <sec:authentication property="principal.member.user_name"/></p>
	  <p>사용자아이디 : <sec:authentication property="principal.username"/></p>
	  <p>사용자 권한 리스트  : <sec:authentication property="principal.member.authList"/></p>
		  
	  <button type = "button" onclick="location.href='/springsecurity/logoutForm'">로그아웃</button>
	  
  </body>
  • property="principal.member"를 통해 반환되는 것은 UserDetailsService에서 반환된 객체
  • = CustomUserDetailsService 에서 dto를 담아 반환된 (생성된)CustomUser() 객체
@Override
	public UserDetails loadUserByUsername(String user_id) throws UsernameNotFoundException {
		MemberDto dto=null;
		
		log.warn("Load User By UserName : " + user_id);
		try {
			dto = memberMapper.read(user_id);
			log.warn("queried by member mapper: " + dto);

		} catch (Exception e) {
			e.printStackTrace();
		}

		return dto == null ? null : new CustomUser(dto);
	}

CustomUserDetailsService 클래스의 loadUserByUsername 메소드

  • CustomUser객체의 타입은 MemberDto 임
  • 따라서 "principal.member." 이하의 속성은 MemberDto의 변수와 맞춰줘야 함

3. 로그인 및 확인