我在我的webapp中使用Apache Shiro.
我在会话中存储了一些参数,特别是存储在数据库中的对象的主键.
当用户登录时,我从数据库加载对象并将主键保存在会话中.然后在应用程序内,用户可以编辑对象的数据,并点击取消或保存按钮.
这两个按钮都会触发RPC,以便将更新的数据提供给服务器.然后使用存储在会话中的主键在数据库中更新对象.
如果用户在应用程序中保持活动状态(制作一些RPC),一切正常.但是如果他在3分钟内保持不活动状态并随后生成RPC,那么Shiro securityUtils.getSubject().getSession()将返回null.
会话超时设置为1,200,000毫秒(20分钟),所以我不认为这是问题.
当我浏览存储在会话管理器缓存中的会话时,我可以看到用户的会话,org.apache.shiro.session.mgt.SimpleSession,id=6de78f10-b58e-496c-b40a-e2a9a4ad069c但是当我尝试从cookie获取会话ID并调用 SecurityUtils.getSecurityManager().getSession(key)以获取会话时(其中key是SessionKey实现):我得到一个例外.
当我尝试从会话ID构建新主题时,我将丢失会话中保存的所有属性.
我很高兴发布一些代码来帮助解决问题,但我尝试了很多解决方法,我不知道从哪里开始......所以请让我知道你需要什么.
或者,如果有人知道一个比Shiro更好的文档框架我很满意(Shiro缺乏文档使得它真的太耗时)