我在 2 个不同的服务器上有 2 个应用程序 - Tomcat(基本上是 .WAR 文件)和 jBoss 中的 EAR。
EAR 是一个可重用的应用程序,我将在其中对用户进行身份验证并将控件发送回 Tomcat 上的应用程序。在进行身份验证时,我在 jBoss 应用程序上创建一个会话对象。
当我将控件发送回 Tomcat 上的应用程序时,我会询问用户是否要注销身份验证应用程序。如果用户按下“是”按钮,我将必须从身份验证应用程序中注销该用户
问题
1)我读到过滤器是使会话无效的最佳方法。就我而言,由于身份验证应用程序旨在由超过 1 个用户使用,过滤器如何知道需要使哪个会话失效?
2)我是否应该将 jBoss 应用程序中创建的会话 ID 传递到 Tomcat 应用程序,以便当用户决定注销时 - 我需要将相同的会话 ID 传回 jBoss 应用程序以使过滤器失效?
您不需要过滤器。一个简单的 Servlet 就可以做到:
public LogoutServlet extends HttpServlet {
@Override
public void doGet(...) {
request.getSession().invalidate();
}
}
然后将此 servlet 映射到/lougout
in web.xml
,每当用户想要注销时,他应该被发送到http://youhost/yourapp/logout
.
如果您想在他已经在使用 tomcat 服务器时注销他,您需要重定向回 JBoss 服务器以使那里的会话无效。
注意request.getSession()
得到current会话 - 即属于发出请求的用户的会话。您的 servlet 容器(服务器)会为您处理这个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)