系统采用 shiro + redis + spring来做的权限控制系统。
登录时报 there is no session with XXX 跟踪断点发现,系统查询session时,查不到redis中的sessionID。
但是我通过redis客户端是可以看到的。
所以可以断定问题就出现在查询代码这一块儿。
经过排查发现,我们系统中采用的是redis集群的方式部署的,但是系统查询redis数据时用的是jedis操作类。
所以,我将redis的操作类(增删改查)替换为 JedisCluster 类。
将所有的对redis CRUD的类都改为这个,就好了。
还有一种可能也会报这个错。且网上大多数的都是因为这个原因才报的这个错。
即redis和shiro 的session 与中间件的缓存名字重复。导致缓存失效。
贴个连接好了。
总归就是一句话,重写session