我的項目shiro版本為1.5.4 升級為1.7.1后第一次訪問報錯400,通過報錯可以看到400報錯大致為參數問題
通過查看地址欄的地址后發現
后面多出來jsessionid的參數.
通過網上查找后統共發現兩種方式的修改,一種是shiro配置文件,另一種為tomcat的配置文件
一.shiro配置文件方式
在自己的shiro配置類中進行配置,添加如下方法
/** * shiro session的管理 */ @Bean public DefaultWebSessionManager sessionManager() { DefaultWebSessionManager defaultWebSessionManager = new DefaultWebSessionManager(); defaultWebSessionManager.setSessionIdUrlRewritingEnabled(false); return defaultWebSessionManager; } @Bean public SecurityManager securityManager(){ DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager(); defaultWebSecurityManager.setRealm(jwtRealm()); defaultWebSecurityManager.setSessionManager(sessionManager()); return defaultWebSecurityManager; }
這種是代碼實現的去除jessionid的方式,在我的項目放到服務器后,不起作用,還是會有jessionid,
通過根據源碼的跟蹤,發現第一次沒有進入shiro的方法添加jessionid,所以我判斷一定是tomcat為url添加了jessionid
二.tomcat添加去除jessionid方法
在tomcat的web.xml文件設置如下參數
<tracking-mode>COOKIE</tracking-mode>
重啟服務器后,問題解決