登录后如何在Vaadin中更改JSESSIONID

登录后如何在Vaadin中更改JSESSIONID,vaadin,vaadin7,Vaadin,Vaadin7,我试图在登录后更改vaadin中的JSESSIONID 这是我的密码 System.out.println("0000.....OLD-SESSION: " + VaadinSession.getCurrent().getSession().isNew()); System.out.println("0000.....OLD-SESSION-ID: " + VaadinSession.getCurrent().getSession().getId()); VaadinSession.getCur

我试图在登录后更改vaadin中的JSESSIONID

这是我的密码

System.out.println("0000.....OLD-SESSION: " + VaadinSession.getCurrent().getSession().isNew());
System.out.println("0000.....OLD-SESSION-ID: " + VaadinSession.getCurrent().getSession().getId());
VaadinSession.getCurrent().getSession().invalidate();
WrappedSession newSession = VaadinService.getCurrentRequest().getWrappedSession(true);
System.out.println("1111.....NEW-SESSION: " + newSession.isNew());
System.out.println("1111.....NEW-SESSION-ID: " + newSession.getId());
VaadinService.getCurrentResponse().addCookie(new Cookie("JSESSIONID", newSession.getId()));

///////////////////// OUTPUT ////////////////////////
0000.....OLD-SESSION: false
0000.....OLD-SESSION-ID: F353B452D148B35E71920C73EA3BB7AA
1111.....NEW-SESSION: true
1111.....NEW-SESSION-ID: 8C6E4EF40724C060B9B10C1E70FB2441
JSESSIONID正在成功更改,但在登录到我的仪表板后,我的会话已过期。我怎样才能在瓦丁解决这个问题

我的目标:登录VAADIN后更改JSESSION ID

现在我正在做类似的事情,我使用VaadinService.reinitializeSession

System.out.println("0000.....OLD-SESSION: " + VaadinSession.getCurrent().getSession().isNew());
System.out.println("0000.....OLD-SESSION-ID: " + VaadinSession.getCurrent().getSession().getId());
for (Cookie cookie : VaadinService.getCurrentRequest().getCookies())
{
    System.out.println("OLD:: " + cookie.getName() + " - " + cookie.getValue());
}
//                              VaadinSession.getCurrent().getSession().invalidate();
//                              WrappedSession newSession = VaadinService.getCurrentRequest().getWrappedSession(true);

VaadinService.reinitializeSession(VaadinService.getCurrentRequest());
System.out.println("1111.....NEW-SESSION: " + VaadinSession.getCurrent().getSession().isNew());
System.out.println("1111.....NEW-SESSION-ID: " + VaadinSession.getCurrent().getSession().getId());

for (Cookie cookie : VaadinService.getCurrentRequest().getCookies())
{
    System.out.println("NEW:: " + cookie.getName() + " - " + cookie.getValue());
}

VaadinService.getCurrentResponse().addCookie(new Cookie("JSESSIONID", VaadinSession.getCurrent().getSession().getId()));

///////////////// NEW OUTPUT /////////////////
0000.....OLD-SESSION: false
0000.....OLD-SESSION-ID: 7115CC9FF20C2CB485B9F35FDCCF7DEE
OLD:: JSESSIONID - 0D9FCDE46EC8BFDF90A267E01F763EE9
OLD:: JSESSIONID - 7115CC9FF20C2CB485B9F35FDCCF7DEE
1111.....NEW-SESSION: true
1111.....NEW-SESSION-ID: 44969C81DAA007B8CF296C8FCEE6581D
NEW:: JSESSIONID - 0D9FCDE46EC8BFDF90A267E01F763EE9
NEW:: JSESSIONID - 7115CC9FF20C2CB485B9F35FDCCF7DEE
但JSESSIONID未在浏览器cookie上更新


使用VaadinService.reinitializeSession

使用VaadinService.reinitializeSession

我正在使用。在我的例子中,登录和仪表板分别有自己的UI。登录完成后,将重定向(站点重新加载)到仪表板

System.out.println("0000.....OLD-SESSION: " + VaadinSession.getCurrent().getSession().isNew());
System.out.println("0000.....OLD-SESSION-ID: " + VaadinSession.getCurrent().getSession().getId());
for (Cookie cookie : VaadinService.getCurrentRequest().getCookies())
{
    System.out.println("OLD:: " + cookie.getName() + " - " + cookie.getValue());
}
//                              VaadinSession.getCurrent().getSession().invalidate();
//                              WrappedSession newSession = VaadinService.getCurrentRequest().getWrappedSession(true);

VaadinService.reinitializeSession(VaadinService.getCurrentRequest());
System.out.println("1111.....NEW-SESSION: " + VaadinSession.getCurrent().getSession().isNew());
System.out.println("1111.....NEW-SESSION-ID: " + VaadinSession.getCurrent().getSession().getId());

for (Cookie cookie : VaadinService.getCurrentRequest().getCookies())
{
    System.out.println("NEW:: " + cookie.getName() + " - " + cookie.getValue());
}

VaadinService.getCurrentResponse().addCookie(new Cookie("JSESSIONID", VaadinSession.getCurrent().getSession().getId()));

///////////////// NEW OUTPUT /////////////////
0000.....OLD-SESSION: false
0000.....OLD-SESSION-ID: 7115CC9FF20C2CB485B9F35FDCCF7DEE
OLD:: JSESSIONID - 0D9FCDE46EC8BFDF90A267E01F763EE9
OLD:: JSESSIONID - 7115CC9FF20C2CB485B9F35FDCCF7DEE
1111.....NEW-SESSION: true
1111.....NEW-SESSION-ID: 44969C81DAA007B8CF296C8FCEE6581D
NEW:: JSESSIONID - 0D9FCDE46EC8BFDF90A267E01F763EE9
NEW:: JSESSIONID - 7115CC9FF20C2CB485B9F35FDCCF7DEE
生成新会话并迁移必要的数据。重定向时,新会话id将写入浏览器中的cookie中

我正在使用。在我的例子中,登录和仪表板分别有自己的UI。登录完成后,将重定向(站点重新加载)到仪表板


生成新会话并迁移必要的数据。重定向时,新会话id将写入浏览器中的cookie中

我已经应用了您的解决方案,但JSESSIONID没有在浏览器上更新:(它创建了一个新的服务器端会话。cookie保持不变,因为它似乎工作正常并更改了会话id。我的来源已经应用了您的解决方案,但JSESSIONID没有在浏览器上更新:(它会创建一个新的服务器端会话。cookie保持不变,因为它似乎工作正常并更改了会话id。来源:为什么要更改会话id?客户端有一个is guy:(.谁想让我实现这一点。我知道这件事不会影响任何形式的会话劫持。谁只是查看了浏览器资源部分,并说我需要在登录和注销后更改此会话id。注销后会话id成功更改。你有没有想过这一点?我面临着一个非常类似的问题:为什么要更改e会话ID?客户端有一个人:(.谁想让我实现这一点。我知道这件事不会影响任何类型的会话劫持。谁只是查看浏览器资源部分,并说我需要在登录和注销后更改此会话id。注销后会话id成功更改。你有没有发现这一点?我面临着非常类似的问题: