我的项目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>
重启服务器后,问题解决
Springboot+shiro+cas项目的shiro升级为1.7.1后第一次访问项目,后台400错误
原文:https://www.cnblogs.com/Cuiyuhao/p/14592681.html