2011-12-15 5 views
0

저는 Spring Security에서 새로 왔습니다.jsf spring 보안 사용자 정보

  1. 어떻게 세션 관리 빈, 사용자 정보에서 액세스 할 수 있습니다 (이름, 암호, 역할) 현재 로그인 한 사용자의 : 나는 봄의 보안 3. 세 가지 질문을 jsf2 사용하고 있습니다?

    보기에서이를 사용하려면 예를 들어 사용자의 역할에 따라 요소를 렌더링합니다.

  2. 사용자가 로그인했는지 어떻게 알 수 있습니까? 사용자가 로그인하지 않은 경우 "로그인 링크"보기를 표시하거나 사용자가 로그인 한 경우 "로그 아웃 링크"를 표시하려면 관리 컨테이너에서이를 저장하기 위해 Spring Security의 어떤 속성을 사용해야합니까? 정보 및보기에서 사용?

  3. "로그인 링크"는 로그인 페이지의 URL에 대한 GET 요청 일뿐입니다. 하지만 어떻게 "로그 아웃 링크"를 보여줄 수 있습니까? 그것은 POST 요청을하고 사용해야합니까 :이

    <h:commandLink value="Logout" action="#{request.contextPath}/j_spring_security_logout" /> 
    

    을? :처럼 "시간 CommandLink는"을 아니면 GET 요청?

    <h:link value="Logout" outcome="#{request.contextPath}/j_spring_security_logout" /> 
    

당신에게 대단히 감사 할 수 있습니다 많은.

+1

아마도 도움이 될 수 있습니다. http://static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.html –

답변

1
  1. 이 개체 인증이 속성을 누구 저장됩니다, 당신은 당신의 ManagedBean은 옆 라인을 얻을 수 있습니다 자신의 인증 AnonymousAuthenticationToken의 instace가 아닌 경우 사용자가 기록

    Authentication auth = SecurityContextHolder.getContext().getAuthentication();

  2. , spring-security-context.xml에서 Spring이 가로 챈 URL을 정의해야합니다.

    제 인터셉터

    는 스프링에 의해 해석되지 않는다. 이 경우 Authentication 개체는 AnonymousAuthenticationToken의 인스턴스입니다.

    두 번째 인터셉터는 스프링에 의해 분석되고 사용자가 페이지 spring-security-context.xml

    /* This is a example for to obtain the rol name for example for generate automatic menu */ 
    Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
    String namePrincipalRol = null; 
    if (auth instanceof AnonymousAuthenticationToken) { 
        namePrincipalRol = "ROLE_ANONYMOUS"; 
    } else { 
        namePrincipalRol = auth.getAuthorities().iterator().next().getAuthority(); 
    } 
    
  3. 좋은 질문에 선언 을 로그인 리디렉션 나는 확실하지 오전하지만 난 그것을해야한다는 읽은 기억이 생각 POST, 시도하는 것이 흥미로울 것입니다. outputLink

종류에 관해서 : 나는 시간을 사용합니다.

+0

답장을 보내 주신 대단히 감사합니다. 내가 오래 전에 물었던이 질문을 잊었다. 프레임 워크와 테스트에 대한 독자적인 독서에서이 문제를 해결했습니다. 마지막으로 질문 (3) 나는 또한 h : outputLink (href와 html 링크 렌더링)를 사용했습니다, 그것은 GET 요청이지 게시물이 아닙니다. 고맙습니다. – choquero70

+0

당신은 환영합니다, 정보 주셔서 감사합니다. 질문은 오래되었지만 나중에 도움이 될 수 있습니다. –