2011-03-01 41 views
2

我有一个检索http会话变量的问题。我有两个服务器,一个码头和一个Apache。 Apache和Java中的两种语言PHP在码头。当用户登录到网站时,他或她的配置文件ID将以Session变量的形式存储在PHP中的Apache服务器中。我可以以某种方式从使用Java的Jetty服务器检索此会话变量吗?跨语言和服务器http会话变量

回答

2

对于跨服务器会话,您可以将会话保留在Cookie中。但是你需要确保使用一些强大的算法和密钥来加密这些cookie。

如果您只想存储用户ID。然后,您可以将ID存储为其公开ID,并将其与该ID一起存储,如果ID与您一样可以使用签名来检测它。

认证

1. One contains ID and 
    2. other contains signature of ID like using function in php called hmac_hash 

hmac_hash

后创建两个Cookie无论你这就需要身份验证的请求。

1. Using ID and same secret generate same signature back. 
    2. Check if the signature you generated is same as one you got in cookie. 

警告:轻微的失误也会造成数据公开。
警告2:大型cookie会让网站变慢一点。

+0

我并不擅长安全性,但强大的加密功能以及Cookie如何帮助提高用户的安全性?与存储普通Cookie不同吗? – einstein 2011-03-01 06:46:30

+0

在会话中,如果您存储一些不应公开的数据,可能是他的姓名或电子邮件。在这种情况下,如果数据被加密,那么复制cookie的人将无法解密并知道实际数据是什么。既然你有密钥解密它,你可以读取数据。 – Zimbabao 2011-03-01 06:48:49

+0

@津巴宝:你能告诉我如何在PHP中做到这一点? – einstein 2011-03-01 07:11:22

0

是不是我,我会试图重写会话处理程序在PHP中,并将会话的东西存储在数据库中。请参阅http://us2.php.net/manual/en/function.session-set-save-handler.php

您可以控制会话变量的存储方式和存储位置。你可以从cookie中读取会话句柄或任何其他语言的任何东西,并为java端编写你自己的东西。

+0

是的,但是当从本地会话转移到数据库持久会话时,会有巨大的性能影响。 – FearUs 2011-03-01 07:42:58

+0

改为使用memcached会话处理程序。它工作出色。 – 2012-03-07 17:57:04