Shiro 权限框架 登录认证成功之后,又返回到登录界面 问题排查始末

表一表这个事儿。
先说个小插曲。
这是公司内部的一个项目,要新增一个需求,就是提供一个对外的接口。

6月30号的时候,拉下来项目代码运行。出现了点击Tomcat无法启动服务没反应的问题,夜里在公司待到11点半,在谷歌上找到原因,恰逢党百年华诞 ,我等着给党道一声生日祝福。
出现问题的原因是 Groovy 插件的问题,通过将插件中的Groovy 取消勾选问题得到解决,该问题已经记录到帖子里。

Tomcat 无法启动,启动按钮由绿变灰,日志控制台也无法自动弹出,啥啥没反应的问题就这么神奇的解决了。

原本以为项目可以跑起来了。
启动Tomcat,运行项目,进入登录界面,登录接口正常,登录成功后,啪,很快哈,出现了这个界面,见图如下:

奇怪的是同一个项目在别的同事拉取下来,就不存在这个问题,可以同一个git库,同一个分支,同一套代码,这找谁说理去。

上天难为你,是在考验你。

网上各种找资料查帖子,提到最多的是POST提交数据类型不匹配之云云..
后来想想会不会是Shiro 权限控制的问题,索性就将 spring-shiro.xml中的shiroFilter注释掉,哎呦喂,居然可以了。想不到真是这儿问题。但是问题是同事运行没问题啊。
接着排查通过关键词 “shiro SESSIONID 400”在谷歌搜索
找到以下相关的帖子,提到是Shiro 1.6.0 版本会有这个问题:
https://xiepl1997.github.io/2021/02/18/shirosessionerror.html 解决Shiro第一次重定向url带有jsessionid导致400错误

https://blog.csdn.net/fly_leopard/article/details/117326169 Shiro (http:/xxxxx/;JSESSIONID=xxxx) InvalidRequestFilter 400无法跳转到登录页问题

https://www.jianshu.com/p/ae3bd4d71ca2 Springboot+Shiro 发生的问题

其中多数帖子中提供一种思路,通过添加配置将JSESSIONID= 自动截取掉,结果是虽然不报
400的错误了,但是登录成功后依旧无法正常跳转到主页

那就换个思路。

写一个TestController 登录成功之后跳转 /test
shiro 版本设置为 1.3.2 版本 登录成功之后跳转 /test 正常 跳转/admin/index
弹回 http://localhost:8080/login;JSESSIONID=xxxxx
但是不会出现 400 bad request
shiro 版本设置为 1.6.0 版本 登录成功之后跳转 /test 正常 跳转/admin/index
弹回 http://localhost:8080/login;JSESSIONID=xxxxx
但是会出现 400 bad request

结论:1.3.2 版本也无法跳转到 /admin/index 说明 400 bad request 只是1.6.0的bug
无法跳转/admin/index 是确实存在,为啥会存在这个可能,可能就是权限拦截配置的问题
接下来应该检查shiro认证配置和权限配置

配置看来一遍又一遍,没发现啥问题啊

7月4号上午,边玩边排查,断断续续排查了3天,是真的累了。

无果.....期间看了一个我最新欢的电影博主关于 《长征》电影的解说,解说的是真的好。

苦不苦想想长征两万五,累不累想想革命老前辈。

最繁杂的问题就用最质朴的语言表述。

灵光一闪亮瞎眼。

这个项目在线上环境是https ,在本地运行是http ,会不会是这儿的问题?

一语成谶!!