我在2个不同的服务器上有2个应用程序 - Tomcat(基本上是.WAR文件)和jBoss中的EAR。
EAR是一个可重复使用的应用程序,我将对用户进行身份验证,并将控件发送回Tomcat上的应用程序。在进行身份验证时,我正在jBoss应用上创建会话对象。
当我将控件发送回Tomcat上的应用程序时,我会询问用户是否要注销身份验证应用程序。如果用户按下“是”按钮,我将不得不从验证应用程序
注销该用户问题
1)我读到Filter是使会话无效的最佳方式。在我的情况下,由于验证应用程序旨在由超过1个用户使用,过滤器将如何知道它需要使哪个会话无效?
2)我是否应该将jBoss应用程序中创建的会话ID传递给Tomcat应用程序,以便在用户决定注销时 - 我需要将相同的会话ID传递给jBoss应用程序,以使过滤器无效?
答案 0 :(得分:2)
您不需要过滤器。一个简单的Servlet会做:
public LogoutServlet extends HttpServlet {
@Override
public void doGet(...) {
request.getSession().invalidate();
}
}
然后将此servlet映射到/lougout
中的web.xml
,每当用户想要注销时,都应将其发送到http://youhost/yourapp/logout
。
如果你想在他使用tomcat服务器时将他注销,你需要重定向回JBoss服务器以使那里的会话无效。
请注意request.getSession()
获取当前会话 - 即属于发出请求的用户的会话。您的servlet容器(服务器)为您处理此问题。