当前位置: 首页 > 工具软件 > uPortal > 使用案例 >

uPortal4-UserInfoService扩展点

马淇
2023-12-01

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");

 类似资料: