作者:呀yuan- | 来源:互联网 | 2024-11-05 16:28
在前后端分离的架构中,使用Shiro框架进行权限管理时,遇到了Session存储的问题。具体表现为在尝试通过Session保存某个键值时,总是无法成功获取该键值。经过调试发现,Shiro框架在处理请求时会对SpringMVC的Request对象进行封装,导致Session操作出现异常。为了解决这一问题,可以通过自定义Session管理器或调整Shiro的配置,确保Session数据能够正确存储和读取。此外,还可以考虑使用分布式Session存储方案,如Redis,以提高系统的可扩展性和可靠性。
最近使用shiro框架来实现一个权限管理的需求,但在使用session保存一个key值时发现怎么获取都为空。
debug后发现shiro框架会封装springmvc的request。如下图:
这可能就导致了无法通过HttpServletRequest.getSession().setAttribute()方法来保存session,key值也自然为空。
试用了几个在前端请求加域的方法没有效果。
最终无意撞出一个解决办法:
不要使用HttpServletRequest来获取session,直接使用HttpSession就可以避免无法保存的问题,debug显示httpSession不会被shiro框架的过滤器封装。