系統采用 shiro + redis + spring來做的權限控制系統。
登錄時報 there is no session with XXX 跟蹤斷點發現,系統查詢session時,查不到redis中的sessionID。
但是我通過redis客戶端是可以看到的。
所以可以斷定問題就出現在查詢代碼這一塊兒。
經過排查發現,我們系統中采用的是redis集群的方式部署的,但是系統查詢redis數據時用的是jedis操作類。
所以,我將redis的操作類(增刪改查)替換為 JedisCluster 類。
將所有的對redis CRUD的類都改為這個,就好了。
還有一種可能也會報這個錯。且網上大多數的都是因為這個原因才報的這個錯。
即redis和shiro 的session 與中間件的緩存名字重復。導致緩存失效。
貼個連接好了。
總歸就是一句話,重寫session