Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中从另一个webapp初始化会话_Java_Servlets_Jboss - Fatal编程技术网

在java中从另一个webapp初始化会话

在java中从另一个webapp初始化会话,java,servlets,jboss,Java,Servlets,Jboss,我正在对当前使用的项目进行界面升级,因此我希望在用户登录旧应用程序后能够初始化升级项目上的会话 我们的想法是,随着时间的推移,一些功能将被移植到另一种视图技术,当用户单击一个移植的功能时,它将把他带到新的应用程序,但现在我被困在新应用程序的会话创建上 我曾尝试从较旧的应用程序安全筛选器类(创建用户会话并验证某些参数的类)发送重定向,但我得到一个java.lang.IllegalStateException,该异常表示提交响应后无法调用sendRedirect() 那么,有没有一种方法可以在用户登

我正在对当前使用的项目进行界面升级,因此我希望在用户登录旧应用程序后能够初始化升级项目上的会话

我们的想法是,随着时间的推移,一些功能将被移植到另一种视图技术,当用户单击一个移植的功能时,它将把他带到新的应用程序,但现在我被困在新应用程序的会话创建上

我曾尝试从较旧的应用程序安全筛选器类(创建用户会话并验证某些参数的类)发送重定向,但我得到一个java.lang.IllegalStateException,该异常表示提交响应后无法调用sendRedirect()

那么,有没有一种方法可以在用户登录旧应用程序后初始化新会话

如果不可能,您能告诉我如何继续使两个应用程序通信吗?基本上,我希望在用户登录到旧应用程序后,自动将其登录到新应用程序

谢谢


在迁移整个应用程序之前,请求只会出现在旧应用程序上。这个想法是为用户提供迁移结束的新页面,这就是为什么我想将他们重定向到新的应用程序。登录请求应作为转发或重定向发送?我是从后端这样做的,因为有一个类在旧应用程序中登录用户

我在过去设计并实现了一个类似的需求,也许它会有所帮助

  • 这两个应用程序位于同一子域中,因此一个应用程序的cookie(尤其是会话cookie)在请求中流向另一个应用程序

  • 其中一个服务器是对用户进行身份验证的“登录”服务器。在您的情况下,它将是应用程序的旧版本

  • 我们没有做后端重定向(尽管这是考虑的方法之一)

  • 当旧应用程序创建用户会话时,我们在两个应用程序共享的模式中的db表中创建了一个条目。该条目包含会话id、唯一用户id、一个名为“IS_ACCESSED”的标志(我将很快解释这一点)、另一个名为“IS_VALID”的标志(注销时设置为false)、一个辅助会话id(我将在下面解释)和一个创建时间戳

  • 在新应用程序上开发的功能将具有指向新应用程序本身的链接。单击这些链接将使用户转到新的应用程序

  • 当请求到达新应用程序时,筛选器首先检查该应用程序的有效会话。如果找不到,则检查旧应用程序的会话cookie(记住所有cookie都流向两个应用程序,两个应用程序都在同一子域中)。如果找到旧应用程序的cookie,它将检索cookie值并访问db表,以查找旧应用程序是否已放入具有该值的会话cookie。如果有,它将检索关联的用户id,创建自己的会话(在新应用中),将基本会话数据(用户配置文件信息)加载到该会话中,然后允许用户访问新应用中请求的页面。它还使用自己的会话id(列secondary_session_id)更新记录,以便记录包含一对会话id

  • 基本上,会话是在第二个应用程序中重新创建的。第一次读取cookie值时,“IS_ACCESSED”值设置为true,以避免使用旧会话cookie的“重播”场景


    此外,一旦用户注销,IS_VALID将标记为false。您可以使用该标志检查用户是否已从主会话注销,并使辅助会话无效(对于单次注销用例)

    您的代码缺失,但可以这样做。这一切都取决于您如何管理用户会话。如果可以控制两个应用的请求,则可以在新应用中重新创建会话。只需从旧应用程序向新应用程序发送登录请求。在新应用程序中捕获时,使用所需参数创建一个新的用户会话,然后重定向将正常工作,直到整个应用程序被迁移,请求将只出现在旧应用程序上。这个想法是为用户提供迁移结束的新页面,这就是为什么我想将他们重定向到新的应用程序。登录请求应作为转发或重定向发送?我是从后端这样做的,因为有一个类在旧应用程序中登录用户。我现在不在我的工作电脑上,但如果有帮助,我会在周一发布代码。感谢您的建议发布您的代码将帮助您找到答案。如果你可以识别旧的应用程序请求,并且可以在新应用程序中修改代码,你就不会有太多问题。嗨,谢谢你的解决方案。我们最终使用了基本的httpRequest重定向,对我们来说,它完成了job.np,只是好奇-您如何确保只有授权用户才能访问新的应用程序?我发送了一些经过检查的请求参数,基本上,这两个安全过滤器是相同的,只是在SecurityFilter1中,我向新应用程序发送带有请求参数的重定向,而在SecurityFilter2中,我只向旧应用程序发送重定向。