undertow下热加载session id重新生成问题

按文档上的说明,使用下面的配置,热加载,session依然重新生成,是否有什么地方需要特别注意的?

# session 过期时间,注意单位是秒
undertow.session.timeout=1800
# 支持 session 热加载,避免依赖于 session 的登录型项目反复登录,默认值为 true。仅用于 devMode,生产环境无影响
undertow.session.hotSwap=true


jfinal-undertow用的是1.5版本,jfinal用的是3.6版本

评论区

JFinal

2019-02-17 10:35

具体什么问题?

tianya

2019-02-17 19:26

@JFinal 我的项目是依赖于session登录的项目,在开发过程中,修改了代码,热加载后,刷新一下页面,访问的session id就变更了,导致需要重新登录。

JFinal

2019-02-17 19:29

@tianya 那应该是老版本 jfinal undertow 的依赖没有消除,jfinal undertow 1.5 修复过这个问题,你再试试

tianya

2019-02-17 19:58

@JFinal
我用的是 jfinal undertow1.5 ,jfinal 3.6,重新试了一下,还是一样

tianya

2019-02-17 19:58

session id is dedf59e4-47fa-4efd-b09e-12b9c55d296e

JFinal-3.6 action report -------- 2019-02-17 19:57:27 --------------------------
Url : POST /main/dashboard
Controller : com.app.controller.IndexController.(IndexController.java:1)
Method : dashboard
--------------------------------------------------------------------------------

Loading changes ......
Loading complete in 0.5 seconds (^_^)

session id is 16f62d13-3b82-4f48-9798-7d25fae6c814

JFinal

2019-02-18 11:17

@tianya 这个就奇怪了。 不过就算是 sessionId 变化了,但你通过 getSessionAttr(key) 仍然是可以获取到数据的

对于 session 的操作,不要直接使用 sessionId,而是直接使用 session 操作的 API,例如:
setSessionAttr(...)
getSessionAttr(...)
getSession(true).setAttribute(...)
getSession(true).getAttribute(...)

这样就绕开了 session id

tianya

2019-02-18 21:43

@JFinal shiro搞的鬼,我的项目使用了shiro,热加载后,shiro重新生成了session id。暂时不知道怎么解决...

tianya

2019-02-18 22:25

解决了,把shiro中dao和cookie的配置删除了,一切都流畅了。
解决的不知所以然

青峰大辉

2019-02-19 16:38

我发现如果不指定 sessionManager,项目热加载之后是不会掉线的,如果指定了sessionManager,那么每次热加载之后,session id 会变化。至于为啥也不清楚,我是试出来的

熊大

2020-02-12 17:50

@青峰大辉 你这个问题解决了没有?我也碰到同样问题

热门反馈

扫码入社