一 今天遇到了一个两个shiro特别奇葩的问题 所以总结下(springboot 2 +jdk8 环境):
shiro登录成功或者跳转到登录页面的时候 url会携带JSESSIONID 中间是以“;”隔开 这样shiro单独用的时候没问题
但是 和 一些别的技术同时下使用的时候就会有问题了如 Security 会报出url非法 然后被禁止(这个具体错误 后期总结我贴出来)很烦人,找了好多博客 常用的两种如下
http.sessionManagement().enableSessionUrlRewriting(true);
server.servlet.session.tracking-modes=cookie
但是上面两种对我来说都没用。最后实在没法子了 重写shiro部分源码(解决这个问题 但是比较麻烦) 如这篇博客
https://blog.youkuaiyun.com/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报这个错误
哎技术不到家,真的难受。。。。。。。。。。。。。。