php - 如何在两个不同的 Web 服务器(例如 xampp 和 tomcat)之间使用 session 值。

标签 php tomcat cookies xampp single-sign-on

<分区>

我有一个在 tomcat 中运行的 java web 应用程序和另一个在 lampp 中运行的 php 应用程序。我需要在这两个应用程序之间使用单点登录。

最好的方法是什么? 1. 共享两个服务器之间的 session 。如果是这样该怎么做。 2. 使用 cookie 在网络服务器之间共享数据。在这种情况下,我需要加密和解密 cookie。如果是这样,使用与 php 和 java 应用程序兼容的加密和解密逻辑的最佳方法是什么。

最佳答案

有几种方法可以做你想做的事:

  1. 由于 PHP 中的 session 存储在一些临时目录中(由 php.ini 中的 session.save_path 选项配置),因此可以将此文件用作 java 应用程序中的 session ,但您必须将 Java webApp 知道如何读取这个文件,并将数据保存回它。可能发生的问题是阻止此文件。每个 php 进程在运行时都会阻塞 session 文件,因此在 php 运行时没有其他程序可以读取它。因此,如果您的负载很高 - 这个问题会降低您的网络应用程序的性能。

  2. 在 php 中,您可以编写自己的函数来保存和加载 session 数据 (http://www.php.net/manual/en/session.customhandler.php),其中有很多其他人已经编写的 php session 处理程序,并且可以在 Internet 上找到。该处理程序可以使用任何存储来放置和获取 session 。比如:mysql数据库,mongodb,甚至memcache(不推荐,因为非持久化)。您可以使用这种方式并将 session 存储在某些数据存储中,而不是默认文件存储,并在 php 和 java 中使用它。这是最好的解决方案。

  3. 最后一个变体 - 将数据保存到 cookie 中。当然,你可以使用一些强大的加密方法,使用封闭的 key 来加密和解密数据,并将这些数据存储在cookie中。但是,坏消息是你的用户会有很多你的加密信息的例子,并且通过一些努力,强大的计算机和解密知识,邪恶的黑客可以获取你的敏感数据,这些数据通常存储在 session 中而不用担心丢失.例如,您可以将登录用户的登录名、密码和信用卡号放在它的 session 中以便快速访问。你可以说,“首先让他们尝试从另一个用户那里窃取 cookie”,但这已经是一个安全漏洞,下一步并不那么重要。

关于php - 如何在两个不同的 Web 服务器(例如 xampp 和 tomcat)之间使用 session 值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17879888/

相关文章:

java - 使用自签名证书将 J2ME 应用程序连接到 https

java - 与 32 位 tomcat 相比,使用 64 位 tomcat 是否可以提高性能?

java - JSP 和 Java Servlet 没有将参数传递给 JSP 文件

http - cookie 中的 HMAC 有标准格式吗?

php - Laravel 通知电子邮件门面队列多个用户

PHP 语法 $ {"{$type}_method"}

java - 如何使用 jsoup 维护变量 cookie 和 session ?

java - 请求头中的字符串和urlconnection中的cookie之间的区别

php - 我的SQL查询通过mm连接多个表

php - MySQL-选择具有多个主题标签的所有项目