Token+Session實(shí)現(xiàn)不同后臺(tái)系統(tǒng)單點(diǎn)登錄

1.需求描述

有兩個(gè)后臺(tái)系統(tǒng)A黍特、B。現(xiàn)在需要A系統(tǒng)的后臺(tái)用戶坎藐,登錄A系統(tǒng)之后,能夠訪問B系統(tǒng)的公告功能嗅榕。針對(duì)這個(gè)需求有兩種解決方案:
1>將A系統(tǒng)的所有用戶接入B系統(tǒng)中;(開發(fā)工作量大吵聪,業(yè)務(wù)邏輯復(fù)雜)凌那;
2>采用Token+Session方式,實(shí)現(xiàn)A系統(tǒng)的后臺(tái)用戶單點(diǎn)登錄(開發(fā)工作量小吟逝,業(yè)務(wù)邏輯簡(jiǎn)單)帽蝶。

2.具體實(shí)現(xiàn)

A系統(tǒng)后臺(tái)用戶訪問,B系統(tǒng)的公告可分為以下步驟:

首先設(shè)計(jì)表ACCESS_TOKEN_SESSION,核心表字段:token块攒、sessonId励稳。
Step1: 獲取token
A系統(tǒng)訪問時(shí),B系統(tǒng)會(huì)在在ACCESS_TOKEN_SESSION表插入一條訪問記錄囱井。
eg:訪問鏈接 http://localhost:8080/Jaden/hz15/getToken
同時(shí)B系統(tǒng)開發(fā)IpWhiteListFilter過濾器驹尼,只有指定請(qǐng)求IP才能獲取到B系統(tǒng)的訪問token

Step2: 攜帶token訪問公告功能頁面
eg:http://localhost:8080/cams/html/notice.html?token=XXX
B系統(tǒng)開發(fā)TokenVefityFilter過濾器庞呕,判斷token是否非空新翎、是否在數(shù)據(jù)庫已有。如果token有效住练,獲取當(dāng)前請(qǐng)求的sessionId地啰,更新到ACCESS_TOKEN_SESSION表的對(duì)應(yīng)記錄中;否則跳轉(zhuǎn)到訪問拒絕頁面讲逛。

Step3:訪問公告功能
B系統(tǒng)開發(fā)AppNoticeReqInterceptor攔截器亏吝,判斷URL符合/appNotice/**請(qǐng)求,對(duì)應(yīng)的sessionId是否有效盏混。(即在ACCESS_TOKEN_SESSION表根據(jù)當(dāng)前sessionId可以查詢到一條記錄)
只有sessionId有效蔚鸥,才能繼續(xù)訪問公告功能:列表展示惜论、新增公告等;否則跳轉(zhuǎn)到訪問拒絕頁面株茶。

Step4: Session超時(shí)處理
B系統(tǒng)自定義ASessionTimeoutListener監(jiān)聽器:當(dāng)A系統(tǒng)生成的Session失效后来涨,根據(jù)sessionId將ACCESS_TOKEN_SESSION表對(duì)應(yīng)記錄物理刪除

3.開發(fā)過程启盛,關(guān)聯(lián)基礎(chǔ)知識(shí)深入

1.Ajax重定向
默認(rèn)ajax是不支持重定向的蹦掐,因?yàn)閍jax本身就是局部刷新,不重新加載頁面的僵闯∥钥梗可以通過前后端共同更改實(shí)現(xiàn)。
2.Session監(jiān)聽器注入Spring Bean
1>因?yàn)楸O(jiān)聽器并不在Spring容器之中鳖粟,所以無法使用@Autowired注入社裆,使用ApplicationContext獲取向图;
2>在監(jiān)聽器中更改數(shù)據(jù)庫記錄泳秀,需要在事務(wù)中進(jìn)行,在方法上添加@Transactional不起作用榄攀。

4.參考文章

1.ajax請(qǐng)求重定向---親測(cè)有效嗜傅;

2.Java在listener(監(jiān)聽器) 中使用Spring容器注入bean

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市檩赢,隨后出現(xiàn)的幾起案子吕嘀,更是在濱河造成了極大的恐慌,老刑警劉巖贞瞒,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偶房,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡军浆,警方通過查閱死者的電腦和手機(jī)棕洋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乒融,“玉大人拍冠,你說我怎么就攤上這事〈氐郑” “怎么了庆杜?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)碟摆。 經(jīng)常有香客問我晃财,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任断盛,我火速辦了婚禮罗洗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钢猛。我一直安慰自己伙菜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布命迈。 她就那樣靜靜地躺著贩绕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪壶愤。 梳的紋絲不亂的頭發(fā)上淑倾,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音征椒,去河邊找鬼娇哆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勃救,可吹牛的內(nèi)容都是我干的碍讨。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼蒙秒,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼勃黍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起税肪,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤溉躲,失蹤者是張志新(化名)和其女友劉穎榜田,沒想到半個(gè)月后益兄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡箭券,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年净捅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辩块。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛔六,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出废亭,到底是詐尸還是另有隱情国章,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布豆村,位于F島的核電站液兽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏掌动。R本人自食惡果不足惜四啰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一宁玫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柑晒,春花似錦欧瘪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至罚屋,卻和暖如春苦囱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脾猛。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工撕彤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猛拴。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓羹铅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親愉昆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子职员,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容