`
esffor
  • 浏览: 1363072 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Liferay Portal额外研究(三):IFrame Portlet的session丢失问题解决

阅读更多
  Liferay提供了一种非常的简单web应用整合和单点登陆的方式:Iframe Portlet。利用Iframe Portlet可以很容易将一个已经存在的web应用纳入,并且支持利用form的post或get方式,实现用户的登陆。
 
       对于Liferay这样的机制没有任何问题,实现的也非常巧妙;但是对于很多web应用系统来说,使用Liferay IFrame Portlet的form方式实现登陆后,虽然可以成功登陆,但是在显示的新页面中,却发现用户信息丢失,或者更准确的说,是session丢失。
 
       其实,这种现象跟Liferay关系不大,而是应用本身决定的。事实上,所有的portal context的iframe 方式,都有可能发生这个情况。
 
       因为很多web应用系统,在执行Login操作的后,习惯性的选择redirect操作,这样会强制浏览器中的显示地址变更为转移的地址。事实上这是个很正确的做法,在正常境况下,不会有任何问题,而且还可以很好的防止页面刷新等所带来的问题。
 
       但是在Liferay的IFrame Portlet中,web应用这样的Redirect操作,造成了调转到新页面后,session变成了一个新的,从而造成放置在原有session中的login user信息丢失。
 
       跟踪并做了如下的一组测试(Liferay和webapp在不同的JVM环境下):
应用
位置
session id
(Liferay)
执行form post前
D03E1B828395EF5BCB1063A8290BD254
(APP_A)
Login操作
397BB3656E2A12A96CE3F16E0A89C607
(APP_A)
登陆后的新页面
58A1054C6EDE4A7D6CFA2FCDBB3E0736
       从上面可以明显看出来,redirect之后,web应用的新页面产生了新的sessionid      
 
       解决这个问题,有两种方式,这两种方式都依赖于被liferay portlet纳入的web应用自身。
       方式一:Login操作后,不采用Redirect方式,而是Dispatcher方式。
       方式二:Login操作后,依然采用redirect方式,但将当前的jsessionid赋予新的页面。
 
Dispatcher方式:
 
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher("/index.jsp");
rd.forward(request, response);
 
Redirect方式(保持同一个session):
      
response.sendRedirect(“
index.jsp;jsessionid=397BB3656E2A12A96CE3F16E0A89C607)
       有一种情况下,无所谓是否采用Redirect方式,这就是在Liferay和webapp在同一个JVM环境下。
 

分享到:
评论

相关推荐

    Liferay Portal额外研究

    在这个额外研究中,我们将探讨如何在新的Tomcat服务器上部署Liferay Portal以及其Portlet。 首先,了解Portlet的部署过程至关重要。Liferay Portal使用portlet.xml、liferay-portlet.xml和liferay-display.xml这三...

    liferay portal 开发指南

    ### Liferay Portal 开发指南知识点概述 #### 一、简介 **Liferay Portal** 是一款功能强大的企业级门户平台,支持多种应用集成和技术扩展。它不仅提供了丰富的特性满足企业日常需求,同时也支持高度定制化开发。...

    liferay-gis-portlet:GIS Portlet

    【liferay-gis-portlet: GIS Portlet】是基于Java技术开发的一款GIS(Geographic Information System,地理信息系统)portlet,用于Liferay Portal平台。Liferay Portal是一款开源的企业级内容管理和协同工作平台,...

    liferay portal 开发实例

    在这个开发实例中,我们将深入探讨四个Liferay Portal MVC(Model-View-Controller)应用的实践案例,这些实例可以帮助开发者更好地理解如何在Liferay环境中进行portlet开发。 首先,让我们了解MVC模式在Liferay中...

    liferay portal开发大全

    **Liferay Portal 开发大全** Liferay Portal 是一个开源的企业级门户平台,广泛用于构建复杂的Web应用程序和企业内部协作系统。它提供了丰富的功能,包括内容管理、社交媒体集成、工作流支持以及用户界面定制。本...

    Liferay Portal文档

    《Liferay Portal文档》是一份详尽的指南,主要介绍了Liferay Portal的架构、工作原理及其核心组件——Portlet。Liferay Portal是一款开源的企业级门户平台,它提供了丰富的功能,如内容管理、社交网络、协作工具等...

    liferay-portal详解

    Liferay Portal 的架构主要由三个部分组成:portlet 容器、portlet 和门户服务器。portlet 容器是 Liferay Portal 的核心组件,负责管理和执行portlet。portlet 是一个小型的web 应用程序,提供了特定的功能。门户...

    Liferay porta 清理不需要的Portlet 代码

    在Liferay Portal中,Portlet是可重用的Web组件,用于展示动态内容和服务。随着时间的推移,项目中可能会积累许多不再使用的Portlet代码,这不仅会占用服务器资源,还可能影响系统的性能和维护效率。因此,定期清理...

    Liferay_Portal_门户解决方案

    Liferay Portal 门户解决方案 Liferay Portal 是世界领先的开源企业门户解决方案,使用最新的 Java 和 Web 2.0 技术。可以运行在所有主流应用服务器和 servlet 容器、数据库和操作系统中,拥有超过 700 个部署组合...

    liferay+Portal+二次开发指南

    通过以上内容,我们可以看到Liferay Portal不仅提供了一套完整的门户解决方案,还允许开发者根据实际需求进行定制化开发。无论是初学者还是高级开发者,都可以利用Liferay的强大功能来构建满足各种业务场景的应用...

    Liferay portlet 工程示例代码

    Liferay Portlet工程示例代码提供了开发者们一个深入理解并实践Liferay Portal平台上的portlet开发的宝贵资源。Liferay Portal是一款开源的企业级门户系统,它允许用户创建、管理和集成各种Web应用程序,而portlet...

    Liferay-Portlet-SDK5.2.3.rar_liferay_liferay sdk_portlet

    Liferay Portlet SDK 5.2.3是该系列的一个特定版本,专为Liferay Portal 5.2.3版本设计,它包含了开发portlet所需的类库、文档和示例代码,使得开发者能够高效地集成自定义功能到Liferay Portal环境中。 **portlet...

    liferay Portal 的学习书籍

    Liferay Portal是一种开源的企业门户解决方案,支持使用Java语言构建企业内部网(intranets)和其他协作平台。根据提供的内容片段,我们可以了解到一些关于Liferay Portal书籍的具体信息,这本书是外国人编写的,受...

    Liferay Portal 二次开发指南

    #### 三、Liferay Portal 二次开发 ##### 3.1 重要基类:GenericPortlet Liferay提供了`GenericPortlet`基类,简化了Portlet的开发流程。继承这个基类可以自动实现大部分Portlet生命周期的方法,开发者只需关注...

    Liferay Portal 内容管理

    【Liferay Portal 内容管理】是企业级门户平台Liferay Portal的重要组成部分,它提供了丰富的文档管理和信息发布功能,便于组织内部的信息共享与协作。 在Liferay Portal中,文档管理主要通过【Document Library】...

    liferay portal(jsp)开发指南

    《Liferay Portal JSP开发指南》 在Liferay Portal开发中,JSP(JavaServer Pages)扮演着重要的角色,它是构建动态Web应用的一种技术。本文将深入探讨如何使用JSP进行Liferay Portlet的开发,主要包括新建Web...

    liferay-portlet-development-guide-4.3

    《Liferay Portlet Development Guide 4.3》是针对Liferay Portal平台的一份详细开发指南,旨在帮助开发者理解和创建portlet应用程序。Liferay Portal是一个开源的企业级门户系统,它提供了丰富的功能,如用户管理、...

    liferay portal 6 使用文档

    在维护方面,Liferay提供了详细的文档和社区支持,帮助用户解决在使用过程中遇到的问题。 #### 五、案例研究与最佳实践 Liferay Portal 6在全球范围内有众多成功案例,涉及金融、教育、医疗等多个行业。例如,某...

Global site tag (gtag.js) - Google Analytics