首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
jfinal-undertow Session冲突如何解决
zlsj80
2020-03-13 19:36
不同
jfinal-undertow
项目部署在同一台服务器上,session产生冲突如何处理,
看浏览器里有
undertow
生成的
JSESSIONID在哪里能修改
项目:
JFinal
1
1
评论区
JFinal
2020-03-13 21:49
部署在同一台服务器上不会造成 session 冲突,因为 session 是与域名/ip、端口绑定的,你不同的多个 jfinal undertow 项目同时运行时的 session 所对应的域名/ip、端口肯定是不同的
浏览器中的 jsessionid 一般不用自己手动改,使用 controller 中的 setCookie 方法操作就可以
当然浏览器中的 session 是可以鼠标右键进行删除的
回复
zlsj80
2020-03-13 22:20
@JFinal
事实就是真冲突了,同一个浏览器一个项目登录了,再登另一个项目,再去访问前面那个项目就退出要重新登录,接着访问后面这个session也没了也要重新登录。是不是两个项目都叫jsessionid相同引起的,想把这个jsessionid改成其他名称,就像jfinal官网哪样叫“jfinalId”或者其他什么不同名称
回复
zzutligang
2020-03-14 04:42
我之前也提过这个问题,不知道是咋了,很奇怪,你升级一下chrome浏览器或则换其他浏览器试试,验证一下,再继续反馈。或则你访问的时候,一个用localhost,一个用物理ip访问试试。
回复
JFinal
2020-03-15 16:42
@zlsj80
可能是浏览器的问题, 按一下 F12 , 在浏览器开发者工具中将所有 cookie 删除
回复
zlsj80
2020-03-15 20:12
@JFinal
都删过了,还是一样。后来发现必须要配置undertow的上下文,不能用默认"/",改成"/xxx"这样,改完访问项目也由原来"http://localhost:11000/login",变成"http://localhist:11000/xxx/login",浏览器中jsessionid的path也会同时变成"/xxx",只有这样浏览器同时访问两个不同项目才不至于session冲突,所以我想请教波总这个名为jsessionid的sessionCookie要这么改动?
回复
JFinal
2020-03-15 20:35
@zlsj80
改一下 sessionid 的值,让不同的项目拥有不同的 id 值就不会有问题了
例如本站 jfinal.com 用于登录的 session 的 name 为 jfinalId
回复
zlsj80
2020-03-15 23:00
@JFinal
波总,要怎么改,能贴下代码吗?是改session.setAttribute这个吗,我改了也不好使,没改变还是叫jsessionid
回复
JFinal
2020-03-15 23:24
@zlsj80
jfinal.com 官网采用的办法是:不使用 getSession(...) setSessionAttr(...) 这类 API。 而是使用 setCookie("jfinalId", sessionId的值) 这种方式来保存用户登录后的 sessionId 值
如果你用到 tomcat 这类容器,也是有办法配置这个值的,但这种配置不灵活,要在你的项目中自主控制才是最方便的
回复
akak
2021-02-04 13:46
可以设置的,
UndertowServer undertowServer = UndertowServer.create(AppConfig.class).configWeb(builder -> {
.........
// 设置SESSIONID
ServletSessionConfig servletSessionConfig = new ServletSessionConfig();
servletSessionConfig.setMaxAge(3600);
servletSessionConfig.setName("TEST-SESSIONID");
builder.getDeploymentInfo().setServletSessionConfig(servletSessionConfig);
});
回复
zlsj80
2021-02-04 17:19
@akak
谢谢
回复
发送
我要反馈
热门反馈
扫码入社
浏览器中的 jsessionid 一般不用自己手动改,使用 controller 中的 setCookie 方法操作就可以
当然浏览器中的 session 是可以鼠标右键进行删除的