gpt4 book ai didi

session-timeout - Shiro 在 2 分钟后重置 session

转载 作者:行者123 更新时间:2023-12-03 01:59:10 25 4
gpt4 key购买 nike

我在我的网络应用程序中使用 Apache Shiro。

我在 session 中存储一些参数,特别是存储在数据库中的对象的主键。

当用户登录时,我从数据库加载对象并将主键保存在 session 中。然后,在应用程序中,用户可以编辑对象的数据并点击取消或保存按钮。

这两个按钮都会触发 RPC,将更新的数据发送到服务器。然后使用 session 中存储的主键在数据库中更新该对象。

如果用户在应用程序中保持事件状态(进行一些 RPC),则一切正常。但是,如果他保持不活动状态 3 分钟并随后进行 RPC,则 Shiro 的 securityUtils.getSubject().getSession() 返回 null。

session 超时设置为 1,200,000 毫秒(20 分钟),因此我认为这不是问题。

当我浏览 session 管理器缓存中存储的 session 时,我可以看到用户的 session org.apache.shiro.session.mgt.SimpleSession,id=6de78f10-b58e-496c-b40a-e2a9a4ad069c 但是当我尝试从 cookie 获取 session ID 并调用 SecurityUtils.getSecurityManager().getSession(key) 来获取 session (其中 key 是 SessionKey 实现)时:我得到一个异常(exception)。

当我尝试根据 session ID 构建新主题时,我丢失了 session 中保存的所有属性。

我很高兴发布一些代码来帮助解决问题,但我尝试了很多解决方法,以至于我不知道从哪里开始......所以请让我知道您需要什么。

或者,如果有人知道比 Shiro 更好的文档化框架,我会洗耳恭听(Shiro 缺乏文档使得它真的太耗时了)

最佳答案

该问题与 ini 文件中的 session 配置有关。和往常一样,shiro 的顺序很重要,而且我的一些台词不合适。

以下是对我有用的配置:

sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
#sessionDAO.activeSessionsCacheName = dropship-activeSessionCache
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
sessionManager.sessionDAO = $sessionDAO
# cookie for single sign on
cookie = org.apache.shiro.web.servlet.SimpleCookie
cookie.name = www.foo.com.session
cookie.path = /
sessionManager.sessionIdCookie = $cookie
# 1,800,000 milliseconds = 30 mins
sessionManager.globalSessionTimeout = 1800000
sessionValidationScheduler =
org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler
sessionValidationScheduler.interval = 1800000
sessionManager.sessionValidationScheduler = $sessionValidationScheduler
securityManager.sessionManager = $sessionManager
cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager
securityManager.cacheManager = $cacheManager

关于session-timeout - Shiro 在 2 分钟后重置 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com