我在webapp中使用Apache Shiro。Shiro在2分钟后重置会话
我在会话中存储了一些参数,特别是存储在数据库中的对象的主键。
当用户登录时,我从数据库加载对象并将主键保存在会话中。然后,在应用程序中,用户可以编辑对象的数据,并点击取消或保存按钮。
这两个按钮都会触发一个RPC,它将更新后的数据发送到服务器。然后使用存储在会话中的主键在数据库中更新对象。
如果用户在应用程序中保持活动状态(制作一些RPC),一切正常。但是如果他在3分钟内保持不活动状态并随后发出RPC,则Shiro的securityUtils.getSubject().getSession()
将返回空值。
会话超时设置为1,200,000毫秒(20分钟),所以我不认为这是问题。
当我浏览存储在会话管理器缓存中的会话时,我可以看到用户的会话org.apache.shiro.session.mgt.SimpleSession,id=6de78f10-b58e-496c-b40a-e2a9a4ad069c
,但是当我尝试从cookie中获取会话ID并呼叫SecurityUtils.getSecurityManager().getSession(key)
获取会话(其中密钥是SessionKey实现):我收到一个异常。
当我尝试从会话ID创建新主题时,我失去了会话中保存的所有属性。
我很高兴发布一些代码来帮助解决问题,但我尝试了很多解决方法,我不知道从哪里开始......所以请让我知道您需要什么。
另外,如果有人知道比四郎更好的记录框架,我所有的耳朵(Shiro的缺乏文件使得消费真的太时)
那么修复是什么?这从你的回答中并不明显,因为你没有解释你已经改变或发布了原始配置。 – frhd