shiro中session,cookie浪听,sessionid螟碎,超時時間的關(guān)系

這里有幾個知識點可以說一下:

cookie的失效時間

maxAge,單位為秒迹栓,有三種值:正數(shù)掉分,負數(shù)和0

正數(shù),則表示該cookie會在maxAge秒之后自動失效。瀏覽器會將maxAge為正數(shù)的cookie持久化酥郭,即寫到對應的cookie文件中(每個瀏覽器的存儲位置是不一樣的)华坦。無論客戶關(guān)閉了瀏覽器還是電腦,只要在maxAge秒之前褥民,該cookie仍然有效季春。如下設置cookie永久有效:

session超時時間配置

當maxAge為負數(shù),則表示該cookie只是一個臨時的cookie消返,不會被持久化载弄,僅在瀏覽器窗口或本窗口打開子窗口時有效,關(guān)閉瀏覽器后立即失效撵颊。

但maxAge為0時宇攻,立即刪除cookie

session失效時間

session的過期時間是從session不活動的時候開始計算,如果session一直活動倡勇,session就總不會過期逞刷,從該Session未被訪問,開始計時; 一旦Session被訪問,計時清0;session超時時間設置為0則session失效,設置正數(shù)則在過了多久還沒有訪問為失效妻熊。

Shiro中的關(guān)系

在用shiro做登錄的時候夸浅,登錄超時是一個很頭疼的問題。在沒有配置sessionManager時扔役,如下這個:

sessionManager

session的超時時間通過sever.servlet.cookie.timeout控制帆喇,如下:

sesiontimeout

如果有配置sessionManager的話,則sever.servlet.cookie.timeout失去了控制的能力亿胸,只能通過sessionManager.setGlobalSessionTimeout來控制超時時間坯钦。

總結(jié)一下:沒有配置cookie中sessionid的超時時間,sessionid的超時時間默認為session(即-1)侈玄,session超時或關(guān)閉瀏覽器就找不到session信息了婉刀。如果配置了cookie中sessionid的超時時間,則在關(guān)掉瀏覽器之后序仙,只要session和sessionid沒有過期突颊,打開瀏覽器,還是可以取到對應的session中的信息诱桂。但是就算是配置了cookie中sessionid的超時時間洋丐,但是如果session過期了且sessionid沒有過期,通過sessionid也是找不到session的挥等。

如果配置了用redis作為session的存儲容器的話友绝。每次訪問session都會執(zhí)行更新redis中session的操作。每次訪問session肝劲,會先訪問cookie中是否有sessionid迁客,如果沒有sessionid話郭宝,就當沒有session的存在,要新建session的掷漱。

如果有sessionid存在粘室,則先去本地sessions中找是否有對應的sessionid的session,如果有的話卜范,就返回對應的session

如果沒有的話衔统,在去redis中查找對應sessionid的session,如果有的話就返回海雪,沒有就沒有了锦爵。

這里有個點,就是redis中redisvalue的超時時間最好和session的超時時間一致奥裸。因為就算redisvalue的超時時間是1個小時险掀,但是本地session的超時時間是30分鐘。在35分鐘的時候湾宙,如果沒有修改cookie中sessionid的時間樟氢,則sessionid在30分鐘之后就不存在了,本地session也過期了侠鳄,因為沒有sessionid埠啃,也找不到redis中的session,就不會返回session了伟恶。

就算是將cookie中sessionid的超時時間設置為了1小時霸妹,在第35分鐘的時候訪問,能從redis中取出session知押,但是取出來的session也是過期的。因為session在存入redis的時候session會有開始時間和存活時間鹃骂,取出來的時候已經(jīng)超過了存活時間台盯,是沒有用的,session返回后會變?yōu)閚ull畏线,session也是不存在的静盅。

用redis保存session,不能解決session超時的問題寝殴,解決的是多個服務器的問題蒿叠。不同的服務器登錄時,一個瀏覽器cookie中的sessionid是一樣的蚣常,就算本地沒有對應的session市咽,但是redis中有,并且沒有超時抵蚊,就可以實現(xiàn)多個服務器都有登錄狀態(tài)了施绎。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溯革,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子谷醉,更是在濱河造成了極大的恐慌致稀,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俱尼,死亡現(xiàn)場離奇詭異抖单,居然都是意外死亡,警方通過查閱死者的電腦和手機遇八,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門矛绘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人押蚤,你說我怎么就攤上這事蔑歌。” “怎么了揽碘?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵次屠,是天一觀的道長。 經(jīng)常有香客問我雳刺,道長劫灶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任掖桦,我火速辦了婚禮本昏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枪汪。我一直安慰自己涌穆,他們只是感情好,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布雀久。 她就那樣靜靜地躺著宿稀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赖捌。 梳的紋絲不亂的頭發(fā)上祝沸,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音越庇,去河邊找鬼罩锐。 笑死,一個胖子當著我的面吹牛卤唉,可吹牛的內(nèi)容都是我干的涩惑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼桑驱,長吁一口氣:“原來是場噩夢啊……” “哼境氢!你這毒婦竟也來了蟀拷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤萍聊,失蹤者是張志新(化名)和其女友劉穎问芬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寿桨,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡此衅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了亭螟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挡鞍。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖预烙,靈堂內(nèi)的尸體忽然破棺而出墨微,到底是詐尸還是另有隱情,我是刑警寧澤扁掸,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布翘县,位于F島的核電站,受9級特大地震影響谴分,放射性物質(zhì)發(fā)生泄漏锈麸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一牺蹄、第九天 我趴在偏房一處隱蔽的房頂上張望忘伞。 院中可真熱鬧,春花似錦沙兰、人聲如沸氓奈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽探颈。三九已至,卻和暖如春训措,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背光羞。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工绩鸣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纱兑。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓呀闻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親潜慎。 傳聞我的和親對象是個殘疾皇子捡多,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354