2010-08-05 2 views
2

이는 내 백업 콩 (글래스 피쉬에 배포)된다내 backing bean에서 호출자 보안 주체를 얻는 방법?

@ManagedBean 
@DeclareRoles({ "USER" }) 
@RolesAllowed("USER") 
public class MyBean { 
    public MyBean() {} 
    public final String getId() { 
    Principal p = .. // how and where? 
    return p.getName(); 
    } 
} 

어떻게 그리고 어디 java.security.Principal 객체가 누가 지금에 기록됩니다 이해받을 수 있나요?

답변

4

ExternalContext#getUserPrincipal()으로 얻을 수 있습니다.

Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal(); 
+0

이 코드에서 nullpointer 예외가 발생합니다. 그게 왜? – victorio

+0

@victorio : 예외의 가능한 모든 원인은 일반적으로 예외 자체 javadoc에 이미 나열되어 있습니다. http://docs.oracle.com/javase/7/docs/api/java/lang/NullPointerException.html 다른 경우, null 참조에 대해서 인스턴스 메소드를 호출한다. 여전히 붙어 있다면, "Ask Question"을 누르고 좋은 SSCCE를 올리십시오. 내 생각 엔 당신이 서블릿 필터에서와 같이 잘못된 순간에 (즉, 아직 생성되지 않았을 때)'FacesContext'를 잡으려고 시도했을 것입니다. – BalusC

+0

감사합니다. http://stackoverflow.com/questions/19772780/why-does-my-facescontext-getcurrentinstance-getexternalcontext-getuserprinci – victorio

관련 문제