Web單點(diǎn)登錄功能設(shè)計(jì)
Posted on 2005-11-16 10:29 Terry的Blog 閱讀(1176) 評(píng)論(1) 編輯 收藏 所屬分類: web開(kāi)發(fā)Web單點(diǎn)登錄功能設(shè)計(jì)
環(huán)境:Weblogic6.1 Oracle9i
1 需求: 現(xiàn)在有兩套Web Application app1和app2,分別放在兩臺(tái)服務(wù)器上.現(xiàn)在希望從app1登錄后能通過(guò)Http鏈接直接遷移到app2畫(huà)面.不需要用戶再輸入口令。
2 分析: 這個(gè)問(wèn)題本質(zhì)上就是讓兩臺(tái)機(jī)器共享登錄的數(shù)據(jù)。
3 解決方法: 考慮通過(guò)Http鏈接中的參數(shù)傳遞session Id。實(shí)際的登錄的數(shù)據(jù)放在一個(gè)雙方都可以存取的公共區(qū)。
現(xiàn)在選擇weblogic的JNDI。(數(shù)據(jù)庫(kù)也可以)
4 實(shí)現(xiàn):1: app1登錄時(shí)把登錄數(shù)據(jù)放到一個(gè)HashMap綁定到initialContext。
2: 遷移鏈接http://app2ServerAddress/app2/TopEntry.do?sessid=這里寫(xiě)sessionId。
3: app2方通過(guò)request.getAttribute("sessid")得到sessionId再到initialContext中l(wèi)ookup出登錄數(shù)據(jù)。
附注:1: weblogic中JNDI的使用可參考本Blog相關(guān)文章。http://www.aygfsteel.com/terry-zj/archive/2005/11/16/20012.html
2: 登錄數(shù)據(jù)放到一個(gè)HashMap中而不是AccountBean之類的自定義結(jié)構(gòu)。
3: 這個(gè)方法的負(fù)荷能力還需具體測(cè)試。