Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 将url重定向到另一个应用程序_Java_Hibernate_Jakarta Ee_Struts - Fatal编程技术网

Java 将url重定向到另一个应用程序

Java 将url重定向到另一个应用程序,java,hibernate,jakarta-ee,struts,Java,Hibernate,Jakarta Ee,Struts,我有一个带有登录Id和密码的应用程序。在这个应用程序中,单击某个菜单项,我想重定向到另一个应用程序,它也有登录Id和密码 我正试图用session.setattribute实现这一点,但没有任何效果 这两个应用程序都是使用Struts和Hibernate在JavaEE上构建的。有人能建议怎么做吗?由于您的应用程序部署在同一个域上,您可以在响应中添加带有身份验证令牌的cookie,并在其他应用程序的请求中读取身份验证令牌的值 我可以想到的另一个选项是,创建一个经过身份验证的值并将其放入数据库中,然

我有一个带有登录Id和密码的应用程序。在这个应用程序中,单击某个菜单项,我想重定向到另一个应用程序,它也有登录Id和密码

我正试图用
session.setattribute
实现这一点,但没有任何效果


这两个应用程序都是使用Struts和Hibernate在JavaEE上构建的。有人能建议怎么做吗?

由于您的应用程序部署在同一个域上,您可以在响应中添加带有身份验证令牌的cookie,并在其他应用程序的请求中读取身份验证令牌的值


我可以想到的另一个选项是,创建一个经过身份验证的值并将其放入数据库中,然后将重定向请求作为请求参数发送给其他应用程序。您的其他应用程序可以读取该身份验证值并使用数据库进行验证,并允许用户通过登录和密码页面

您无法通过HttpSession在两个单独的应用程序之间直接通信。您需要做的是使用cookies来实现这种通信


还请看一看,因为您的应用程序可能与该应用程序重复。

您在这里寻找的是所谓的“单点登录”,即不同的应用程序之间共享用户凭据,因此用户只需登录一次


正如您已经发现的,会话不会在web应用程序之间共享。事实上,JavaServlet规范中没有这方面的规定。根据您使用的应用程序服务器和部署架构的不同,有多种方法可用于此目的。最简单的例子是,您正在使用tomcat,并且所有应用程序都部署到相同的虚拟主机和领域(并且使用相同的域)。然后您可以使用。

这两个应用程序由同一个域指向?抱歉,没有回答您的问题。意思是,这两个应用程序部署在同一个域上,或者需要建立跨域引用?它们部署在同一个域中。@Cyphon:sesion.setAttribute应该可以工作,因为您说它们在同一个域中。您希望用户只登录一次,即如果用户登录其中一个应用程序,他/她也必须自动登录其他应用程序,而无需再次询问用户用户名和密码,对吗?老实说,我从未尝试过在两个应用程序之间进行这样的通信。从理论上讲,您可以执行URL重定向并尝试在HttpRequest上设置属性。您的意思是将用户id和密码作为URL参数发送到第二个应用程序并自动登录用户吗?我不会这样做,因为您将在URL中包含明文密码,例如,它将记录在所有访问日志中。总比用HTTP POST重定向好(比如表单提交)。@pap:OP说webapplications在同一个域中。所以会话将被共享。@Ashwin仅仅因为它们在同一个域中,并不意味着会话是共享的。会话是应用程序的本地会话。您可能正在考虑cookie,是的,浏览器在同一域内的不同主机之间共享cookie(前提是cookie的定义是这样的)。@pap:会话本身由一个名为JSESSIONID的cookie维护,该cookie的路径为=/。这意味着它可以从同一主机的任何位置访问。一个愚蠢的问题是“它是服务器会话还是浏览器会话”?