복붙노트

[SPRING] 스프링 3 보안을 사용하여 jsp 페이지에서 내 사용자 정의 사용자 객체에 액세스하기

SPRING

스프링 3 보안을 사용하여 jsp 페이지에서 내 사용자 정의 사용자 객체에 액세스하기

UserDetailsService를 구현했으며, MyUser (UserDetails를 구현)의 인스턴스를 반환합니다.

public MyUser loadUserByUsername(String arg0)

이제 My JSP 페이지에서 MyUser의 getters / fields에 액세스하고 싶습니다.

${pageContext.request.userPrincipal.name}

다만, Principal 오브젝트에의 액세스 밖에 할 수 없습니다. MyUser 객체에 액세스하려면 어떻게해야합니까?

해결법

  1. ==============================

    1.JSP 페이지에서 쉽게 추가했습니다 :

    JSP 페이지에서 쉽게 추가했습니다 :

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

    principal이 실제로 MyUser의 인스턴스 인 경우 "firstname"은 내 사용자 정의 getter 및 setter가 될 수 있습니다.

  2. ==============================

    2.성공적인 로그인 직후 HTTPSesson을 분석 한 결과, SPRING_SECURITY_CONTEXT라는 속성이 있다는 것을 알았습니다. 예를 들어, 광산 사용자 정의 UserDetails에는 firstName 속성을 가진 user라는 객체가 있습니다. JSP에서이 속성의 값은 다음 값으로 도달 할 수 있습니다.

    성공적인 로그인 직후 HTTPSesson을 분석 한 결과, SPRING_SECURITY_CONTEXT라는 속성이 있다는 것을 알았습니다. 예를 들어, 광산 사용자 정의 UserDetails에는 firstName 속성을 가진 user라는 객체가 있습니다. JSP에서이 속성의 값은 다음 값으로 도달 할 수 있습니다.

    ${sessionScope.SPRING_SECURITY_CONTEXT.authentication.principal.user.firstName}
    
  3. ==============================

    3.MyUser 객체가 Principal을 구현하고 성공적인 로그인시 http 세션에 배치하면 세션에서 가져와 캐스팅 할 수 있습니다.

    MyUser 객체가 Principal을 구현하고 성공적인 로그인시 http 세션에 배치하면 세션에서 가져와 캐스팅 할 수 있습니다.

    AuthenticationSuccessHandler를 구현하여 UserDetailsService를 세션에 삽입하고 세션에 배치 할 수 있습니다.

    그런 다음 요소를 처리하는 UsernamePasswordauthenticationFilter에 AuthenticationSuccessHandler를 삽입 할 수 있습니다.

    보안 컨텍스트 구성에 대한 세부 정보를 제공하면 세부 정보를 제공 할 수 있습니다.

  4. from https://stackoverflow.com/questions/7807967/accessing-my-custom-user-object-in-jsp-page-using-spring-3-security by cc-by-sa and MIT license