隐式/显式登录过滤器 - 在过滤器中设置数据,该数据可在登录后所有portlet可用-Webpshere Portal



我无法执行以下操作:任何帮助都将不胜感激。谢谢。

1)将一些数据(对象)设置为自定义隐式/显式登录过滤器中的Httpsession,并在登录后访问所有端口。

2)尝试了这一点-httpsession sesson = request.getSession(true)并在会话上设置一个属性。但是登录后无法访问portlet内部的属性。

3)最后一个选项是dynacache。避免这种情况并检查一下,以查看使用隐式/显式登录过滤器是否有任何优雅的方法。

用例:在隐式/显式登录过滤器中设置一些共享数据,并在登录后在所有端口中访问它。

使用的参考:

http://www.ibm.com/developerworks/websphere/library/techarticles/0905_buchwald/0905_buchwald.html

您可以使用以下内容实现相同的结果,如下

  1. 内部的explicit/remant登录过滤器将数据设置为session属性。

  2. 创建一个sessionValidationFilter,在此过滤器内部读取从会话中读取属性并将其设置为请求属性。现在配置此过滤器是管理控制台。

  3. 在Portlet内部使用以下代码段以获取共享数据:

    PortletUtils.getHttpServletRequest(renderRequest).getAttribute(attributeName)
    

    PortletUtils.getHttpServletRequest(actionRequest).getAttribute(attributeName)
    

afaik无法从Portlet API获取Httpsession。但是,大多数门户网站实现确实提供了一种特定平台访问它的方式。

import com.ibm.wps.pb.utils.portlet.PortletUtils;
...
HttpServletRequest httpRequest = PortletUtils.getHttpServletRequest(portletRequest);
HttpSession httpSession = httpServletRequest.getSession();

您可以在港口中使用它来访问httpsession对象,然后根据需要进行操作。

我不知道您是如何尝试从Portlet会话中获取数据的,但是,有针对Portal V5的本文。快速浏览一下,这似乎暗示您可以在HTTP会话中设置某些内容,然后作为应用程序分割的Portlet Session属性访问它。但是,如果这种行为只是实施细节而不是官方文档的一部分,那么我将来不会依靠它是真实的。

登录用户是两个步骤过程。

  1. 内部的explicit/demtit登录过滤器将数据设置为session属性。

  2. 创建一个ServletFilter,在此过滤器内部读取会话中的属性,并将其设置为请求属性。现在,使用wps.ear配置此Servlet过滤器如下:

    a。将Servlet滤波器作为罐子导出,然后将此罐子放在

    C:IBMWebSpherePortalServersharedapp

    注意:我假设WebSphere Portal Server已安装在C: ibm

    b。在Web.xml中为您的自定义过滤器添加过滤器映射。

    C:IBMWebSpherewp_profileconfigcells10Cellapplicationswps.eardeploymentswpswps.warWEB-INF

  3. 在Portlet内部使用以下代码段以获取共享数据: PortletUtils.getHttpServletRequest(renderRequest).getAttribute(attributeName)

    PortletUtils.getHttpServletRequest(actionRequest).getAttribute(attributeName)

  4. 重新启动门户服务器。

最新更新