在JSP中链接不同的页面并保留当前的Spring Security Session



当用户使用Spring Security登录到我的webapp时,他被重定向到某个JSP网页,并且他的用户上下文是活动的(登录会话)。现在,在这个页面上,点击链接或按钮后,我想在同一网页上显示来自另一个URL的解析JSON数据,但是当我使用JSON数据访问这个页面时:

reader = new BufferedReader(new InputStreamReader(url.openStream()));

这个带有JSON的页面在没有使用他的会话的情况下被访问,JSON数据无法被访问。

综上所述,我的问题是:如何在同一个当前用户(Spring Security)会话中使用JSP访问另一个网页?

当您从浏览器访问JSP或Servlet时,浏览器和web应用程序之间存在一个会话。

但是您在这里所做的是从Java代码打开URLConnection(无论此代码是在JSP中还是在Servlet中,在运行时都是一样的)是从服务器本身向同一服务器中的资源请求资源。就是这样,Java代码正在向服务器打开一个新会话。由于您请求的JSON依赖于会话(这就是您所说的),因此回复将不同。

如果你在会话管理中有一种管理器应用程序(例如Tomcat的psi-probe),你可以看到在你的应用程序上下文中至少有两个会话,一个用于浏览器会话,另一个用于到服务器JSON资源的Java连接。

如果您确实需要从浏览器调用jsp时使用的同一会话中获取json,则可以使用javascript从中访问该json资源。还有其他替代方法,如直接调用通过Java导入返回JSON资源的Java类,而不是作为URL调用它。

相关内容

最新更新