專注應用,關注發展,開拓創新

          <-------------------------------------------------------------------& 珍惜生命 . 善用時間 . 把握未來 . 創造價值。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            11 Posts :: 17 Stories :: 10 Comments :: 0 Trackbacks
          ?????? 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環境下。
          posted on 2006-09-13 23:54 吳名居 閱讀(484) 評論(0)  編輯  收藏 所屬分類: 門戶-JBOSS-Protal

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 安徽省| 北流市| 虎林市| 云林县| 彝良县| 肇源县| 德清县| 潮州市| 息烽县| 昂仁县| 嘉义县| 司法| 伽师县| 巴楚县| 桦南县| 马山县| 广河县| 天津市| 漳浦县| 东丰县| 红河县| 衡阳县| 武胜县| 青岛市| 宝鸡市| 嘉禾县| 建阳市| 怀柔区| 宣威市| 武安市| 峨眉山市| 湘潭市| 德昌县| 金塔县| 锦州市| 南康市| 崇阳县| 嘉鱼县| 高安市| 仙居县| 保定市|