我正在为我们公司设计一个企业安全服务器 - 我们拥有许多不同的应用程序,大多数用java编写,还有一些用PHP编写。我可以提供一个远程API,使每个应用程序都可以访问服务器。我还可以创建每个应用程序可以包含的“代理”,它们可以为它们完成所有工作,但允许我的服务器控制它们的会话,从而控制它们的身份验证/授权。问题是我可能会更好地在java中编写代理,因为80%或更多的应用程序都在java中。
如果我用java编写代理,有没有人知道这个程序是否有办法访问php会话?如果没有,是否有人建议采取更好的方式来做这件事?
答案 0 :(得分:0)
您可以使用session_set_save_handler()挂钩PHP的会话处理(手册中包含一个简单但完整的自定义处理程序的示例)。您应该能够以这种方式将PHP的会话管理与中央Java服务器同步。
您的PHP应用程序将通过cookie($ _COOKIE [“SESSION_ID”]或其他)接收会话ID。
您的自定义session_save_handler将不会维护自己的会话存储,而是将该会话ID传递给基于Java的中央安全服务器,并获取所有会话数据。从PHP写入会话将以相同的方式进行路由。
你当然也可以采用另一种方式,从外部轮询PHP的内部会话数据,但不太明白究竟是什么。如果是这种情况,你能在那里详细介绍吗?
答案 1 :(得分:0)
会话数据作为(php)序列化数组存储在临时文件夹中。这些的位置在php.ini文件中设置。
但您可以通过编写自己的处理程序来更改数据格式和存储位置(例如,更改为数据库或共享内存或其他位置)。
快速google建议有几个人用Java编写[de]序列化程序来处理PHP数据。例如http://hurring.com/scott/code/java/serialize/
如果您对内置的PHP序列化功能有疑问 - 请使用google for WDDX(IIRC作为标准配置)并将数据序列化为XML。
如果您希望代理独立于Web会话继续运行,您可能需要考虑如何使会话数据保持对PHP的活动状态。
下进行。