為什么第二次testrole1攜帶了登陸信息?
當(dāng)?shù)谝淮蔚顷懞螅]有在cookie或者其他域保存任何信息 也就是說沒有任何信息可以證明用戶登陸了??
但是第二次直接跳轉(zhuǎn)頁(yè)面到testrole這個(gè)路徑? 卻有第一次登陸的角色的信息? ?服務(wù)器識(shí)別到了用戶曾經(jīng)登陸過 也知道用戶的角色和權(quán)限? ?
?請(qǐng)問一下是怎么識(shí)別的 是因?yàn)榕渲玫膯栴}嗎
當(dāng)?shù)谝淮蔚顷懞螅]有在cookie或者其他域保存任何信息 也就是說沒有任何信息可以證明用戶登陸了??
但是第二次直接跳轉(zhuǎn)頁(yè)面到testrole這個(gè)路徑? 卻有第一次登陸的角色的信息? ?服務(wù)器識(shí)別到了用戶曾經(jīng)登陸過 也知道用戶的角色和權(quán)限? ?
?請(qǐng)問一下是怎么識(shí)別的 是因?yàn)榕渲玫膯栴}嗎
2018-11-22
舉報(bào)
2018-12-12
你登陸了,subject內(nèi)有信息,服務(wù)器為關(guān)閉,肯定有你的信息,你是admin角色所以可以訪問testrole,沒有admin1這個(gè)角色所以報(bào)錯(cuò)
2021-09-21
原理如下:第一次后臺(tái)認(rèn)證成功后,shiro肯定生成了一個(gè)sessionId關(guān)聯(lián)著某個(gè)subject。放到session管理器中。然后把sessionId通過http響應(yīng)頭set-Cookie的形式返回給瀏覽器。瀏覽器保留了該Cookie。下次訪問第二個(gè)url時(shí),http請(qǐng)求頭里就攜帶了上次的cookie信息,也就是sessionId,然后shrio就可以通過從請(qǐng)求頭中提取,查詢內(nèi)部的session管理器,取出關(guān)聯(lián)的subject對(duì)象。
這種形式,只能適用于web。
如果前端是app或者小程序的情況,不太實(shí)用。因?yàn)橛行┛蚣苁遣恢С衷O(shè)置cookie的,但是會(huì)支持設(shè)置header。所以如果前端是app或者小程序的話,一般會(huì)通過header來返回和獲取對(duì)應(yīng)的token(相當(dāng)于sessionId)。我看jeectBoog就是放在請(qǐng)求頭和響應(yīng)頭里的。那個(gè)token。
2019-12-24
就是存在請(qǐng)求體里面
2018-12-26
shiro框架 應(yīng)該也是通過Jsessionid來判斷是否已經(jīng)登錄的。登錄成功后就有Jsessionid,所以可以繼續(xù)訪問其他url。你可以通過瀏覽器F12工具 把Jsessionid再次編輯成其他的內(nèi)容 然后請(qǐng)求,就會(huì)被重新打回login.html頁(yè)面了。