一 今天遇到了一個兩個shiro特別奇葩的問題 所以總結下(springboot 2 +jdk8 環境):
shiro登錄成功或者跳轉到登錄頁面的時候 url會攜帶JSESSIONID 中間是以“;”隔開 這樣shiro單獨用的時候沒問題
但是 和 一些別的技術同時下使用的時候就會有問題了如 Security 會報出url非法 然後被禁止(這個具體錯誤 後期總結我貼出來)很煩人,找了好多博客 常用的兩種如下
http.sessionManagement().enableSessionUrlRewriting(true);
server.servlet.session.tracking-modes=cookie
但是上面兩種對我來說都沒用。最後實在沒法子了 重寫shiro部分源碼(解決這個問題 但是比較麻煩) 如這篇博客
https://blog.csdn.net/mr_yangzc/article/details/78773053(繼承ShiroHttpServletResponse 重寫方法 注視掉拼接 JSESSIONID 這塊代碼 但是這個有點問題 getSecurityManager 的時候是null 這個自己處理下 判斷是null的話 把shiro自定義實現的DefaultSecurityManager注入進去就可以解決 )
第二種方法
只想說一句 mmp!
第二個問題 shiro 前後端分離 未登錄或者登錄失效 重定向問題
好多博客都是說重定向到一個接口 返回給前端 前端就能處理了 然而我們的前端說我請求的是a接口 我只能監控到a接口的返回 你重定向到b接口在返回 我監控不到 所以我就得想法子解決(前端線上登錄頁面訪問不到 所以不能直接在後臺重定向到頁面)
解決辦法 :
重寫shiro部分源碼 如下
http://heeexy.com/2017/10/22/build-springboot-shiro-vue/(參靠部分源碼)
Shiro異常java.lang.IllegalArgumentException: Odd number of characters的解決方案
這個是個小異常 存儲到數據庫的密碼必須加密 不然shiro報這個錯誤
哎技術不到家,真的難受。。。。。。。。。。。。。。