<分区>
我有一个在 tomcat 中运行的 java web 应用程序和另一个在 lampp 中运行的 php 应用程序。我需要在这两个应用程序之间使用单点登录。
最好的方法是什么? 1. 共享两个服务器之间的 session 。如果是这样该怎么做。 2. 使用 cookie 在网络服务器之间共享数据。在这种情况下,我需要加密和解密 cookie。如果是这样,使用与 php 和 java 应用程序兼容的加密和解密逻辑的最佳方法是什么。
<分区>
我有一个在 tomcat 中运行的 java web 应用程序和另一个在 lampp 中运行的 php 应用程序。我需要在这两个应用程序之间使用单点登录。
最好的方法是什么? 1. 共享两个服务器之间的 session 。如果是这样该怎么做。 2. 使用 cookie 在网络服务器之间共享数据。在这种情况下,我需要加密和解密 cookie。如果是这样,使用与 php 和 java 应用程序兼容的加密和解密逻辑的最佳方法是什么。
最佳答案
有几种方法可以做你想做的事:
由于 PHP 中的 session 存储在一些临时目录中(由 php.ini 中的 session.save_path 选项配置),因此可以将此文件用作 java 应用程序中的 session ,但您必须将 Java webApp 知道如何读取这个文件,并将数据保存回它。可能发生的问题是阻止此文件。每个 php 进程在运行时都会阻塞 session 文件,因此在 php 运行时没有其他程序可以读取它。因此,如果您的负载很高 - 这个问题会降低您的网络应用程序的性能。
在 php 中,您可以编写自己的函数来保存和加载 session 数据 (http://www.php.net/manual/en/session.customhandler.php),其中有很多其他人已经编写的 php session 处理程序,并且可以在 Internet 上找到。该处理程序可以使用任何存储来放置和获取 session 。比如:mysql数据库,mongodb,甚至memcache(不推荐,因为非持久化)。您可以使用这种方式并将 session 存储在某些数据存储中,而不是默认文件存储,并在 php 和 java 中使用它。这是最好的解决方案。
最后一个变体 - 将数据保存到 cookie 中。当然,你可以使用一些强大的加密方法,使用封闭的 key 来加密和解密数据,并将这些数据存储在cookie中。但是,坏消息是你的用户会有很多你的加密信息的例子,并且通过一些努力,强大的计算机和解密知识,邪恶的黑客可以获取你的敏感数据,这些数据通常存储在 session 中而不用担心丢失.例如,您可以将登录用户的登录名、密码和信用卡号放在它的 session 中以便快速访问。你可以说,“首先让他们尝试从另一个用户那里窃取 cookie”,但这已经是一个安全漏洞,下一步并不那么重要。
关于php - 如何在两个不同的 Web 服务器(例如 xampp 和 tomcat)之间使用 session 值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17879888/