為什么第二次testrole1攜帶了登陸信息?
當第一次登陸后,并沒有在cookie或者其他域保存任何信息 也就是說沒有任何信息可以證明用戶登陸了??
但是第二次直接跳轉頁面到testrole這個路徑? 卻有第一次登陸的角色的信息? ?服務器識別到了用戶曾經登陸過 也知道用戶的角色和權限? ?
?請問一下是怎么識別的 是因為配置的問題嗎
當第一次登陸后,并沒有在cookie或者其他域保存任何信息 也就是說沒有任何信息可以證明用戶登陸了??
但是第二次直接跳轉頁面到testrole這個路徑? 卻有第一次登陸的角色的信息? ?服務器識別到了用戶曾經登陸過 也知道用戶的角色和權限? ?
?請問一下是怎么識別的 是因為配置的問題嗎
2018-11-22
舉報
2018-12-12
你登陸了,subject內有信息,服務器為關閉,肯定有你的信息,你是admin角色所以可以訪問testrole,沒有admin1這個角色所以報錯
2021-09-21
原理如下:第一次后臺認證成功后,shiro肯定生成了一個sessionId關聯著某個subject。放到session管理器中。然后把sessionId通過http響應頭set-Cookie的形式返回給瀏覽器。瀏覽器保留了該Cookie。下次訪問第二個url時,http請求頭里就攜帶了上次的cookie信息,也就是sessionId,然后shrio就可以通過從請求頭中提取,查詢內部的session管理器,取出關聯的subject對象。
這種形式,只能適用于web。
如果前端是app或者小程序的情況,不太實用。因為有些框架是不支持設置cookie的,但是會支持設置header。所以如果前端是app或者小程序的話,一般會通過header來返回和獲取對應的token(相當于sessionId)。我看jeectBoog就是放在請求頭和響應頭里的。那個token。
2019-12-24
就是存在請求體里面
2018-12-26
shiro框架 應該也是通過Jsessionid來判斷是否已經登錄的。登錄成功后就有Jsessionid,所以可以繼續訪問其他url。你可以通過瀏覽器F12工具 把Jsessionid再次編輯成其他的內容 然后請求,就會被重新打回login.html頁面了。