2011年7月24日星期日

WebCenter_022:如何获取WebCenter Portal 应用登录用户的信息?

Portal应用是由很多个Portlet组成的,每一个Portlet可以看成是一个“迷你Web应用”。
有时在Portlet中,我们需要根据登录用户的信息做一些事情,比如过滤一些查询条件。
由于Portal应用跟普通的Web应用不同,因此获取登录用户的信息的方式也不同。

在WebCenter Suite 11gR4中,我们可以这样获取用户的登录信息。
1.在portlet.xml文件中,增加属性com.oracle.portlet.useWsrpUserContextForUserAuthenticationInfo=true
选中要设置该属性的Portlet,增加一个container-runtime-option属性:useWsrpUserContextForUserAuthenticationInfo。


2.在ManageBean中获取用户信息
这里给出两种方式:
(1)如果你使用了ADF Portlet bridge来生成Portlet,你可以从ADFContext得到用户信息,这种方式比较快捷:
ADFContext.getCurrent().getSecurityContext().getUserName()
(2)其它情况,你可以从FacesContext得到用户信息,这是更通用的获取方式:
FacesContext.getCurrentInstance().getExternalContext().getRemoteUser()

3.通过Expression Language来获取用户信息
#{securityContext.userName}

参考文献:
1. http://download.oracle.com/docs/cd/E17904_01/webcenter.1111/e10148/jpsdg_java_adv.htm#BABBGBBE

说明:以上信息来自于Ken Zhao和Liao ShuangShuang转发的邮件,在此表示感谢。

没有评论: