2010-08-05 24 views
2

这是我支持bean(部署到GlassFish):如何获得我的支持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

我得到这个代码的空指针例外。这是为什么? – victorio 2013-11-04 16:38:11

+0

@victorio:异常的所有可能原因通常已经列在异常自己的javadoc中:http://docs.oracle.com/javase/7/docs/api/java/lang/NullPointerException.html其中,当您尝试在'null'引用上调用一个实例方法。如果你仍然卡住,只需按“提问”并发布一个好的SSCCE。我最好的猜测是你试图在错误的时刻抓住'FacesContext'(即,当它还没有被创建时),就像在一个servlet过滤器中一样。 – BalusC 2013-11-04 16:39:33

+0

谢谢你:http://stackoverflow.com/questions/19772780/why-does-my-facescontext-getcurrentinstance-getexternalcontext-getuserprinci – victorio 2013-11-04 16:52:12

相关问题