uPortal UserInfoServices通过UserInfo的map集合向portlets提供用户的属性信息,uPortal绑定的服务提供了向portlets添加用户目录属性、CAS proxy tickets和缓存凭据的能力。采纳者希望提供更多信息的UserInfo map集合可以使用这个API增加更多的属性。
要创建一个新的UserInfoService,需要实现org.apache.pluto.container.UserInfoService。一个很好的例子UserInfoService可能是的CachedPasswordUserInfoService。
一旦你创建新的服务后,将它写入
uportal-impl/src/main/resources/properties/contexts/portletContainerContext.xml。您将需要创建一个新的服务bean定义,然后将其添加到要合并的“userInfoService”bean的服务列表。
如下:
<bean id="userInfoService"
class="org.jasig.portal.portlet.container.services.MergingUserInfoService">
<property name="userInfoServices">
<list>
<ref bean="personDirectoryUserInfoService"/>
<ref bean="casTicketUserInfoService"/>
<ref bean="myNewUserInfoService"/>
</list>
</property>
</bean>
<bean id="myNewUserInfoService"
class="org.jasig.portal.portlet.container.services.MyNewUserInfoService">
<property name="portletWindowRegistry" ref="portletWindowRegistry" />
<property name="portletEntityRegistry" ref="portletEntityRegistry" />
<property name="portletDefinitionRegistry" ref="portletDefinitionRegistry" />
<property name="portalRequestUtils" ref="portalRequestUtils" />
<!-- Additional Spring resources required by your service -->
</bean>
修改portlet.xml加入下面的配置:
<user-attribute>
<description>Username attribute name for uPortal user</description>
<name>username</name>
</user-attribute>
<user-attribute>
<description>Password attribute name for uPortal user</description>
<name>userPassword</name>
</user-attribute>
注意:此用户属性的name值要和personDirectoryContext.xml配置一致,<user-attribute>标记要和<portlet>标记同级,不可放在<portlet></portlet>标记内。
然后在portlet的jsp中可以通过下面代码获得属性:
<%@page import="javax.portlet.PortletRequest,java.util.*" %>
Map userInfo = (Map)request.getAttribute(PortletRequest.USER_INFO);
String name = (String)userInfo.get("username ");
String pass = (String)userInfo.get("userPassword");