far*_*eed 3 java jsf login j-security-check managed-bean
我正在运行Glassfish 3.0,我正在实现JDBCRealm用于登录身份验证.用户名和角色保存在名为usertable的表中.身份验证按预期工作.
但问题是,当用户登录时,如何在应用程序中检索登录用户的用户名?
PS:我正在实现JSF页面和Managed Bean
在JSF中,您可以使用该ExternalContext对象检索与请求关联的当前Principal,从而检索当前会话,该对象可以从中检索FacesContext.可以使用以下getUserPrincipal()方法从ExternalContext访问与请求关联的Principal :
FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
Run Code Online (Sandbox Code Playgroud)
上面的调用可以在JSF托管bean中完成.您可以getName()在Principal对象上调用该方法,以将用户的名称检索为String.
请注意Principal,如果您在身份验证之前检索Principal,或者身份验证方案不保护整个站点,则可以获取引用匿名用户的实例.