2011-05-27 112 views
4

我有一个场景,希望你的观点。在不同的应用程序平台之间共享会话

我在Django,Rails,PHP中开发了不同的Web应用程序,我希望他们每次都能共享相同的会话数据。意思是如果使用登录到PHP应用程序,它可以自动登录到Rails应用程序,反之亦然。

我知道它的某种中央认证服务器。其中一些是cas,josso

你有什么意见呢。我想要Google Apps这样的行为,当我登录到Gmail时,我也可以自动登录到GoogleDocs。

请分享您的想法,那如何实现这个场景?

+0

我没有测试过,但可能会存储会话变量的XML文件格式和然后在您的应用程序中共享该文件。 – SIFE 2011-05-27 09:20:54

+0

这里的问题是,每个框架或语言都以不同的方式实现会话(不同的后端,将其保存在后端等方式)。找到适用于它们的解决方案可能有点矫枉过正。 – 2011-05-27 09:34:05

+0

我目前使用rubycas-server来实现我的场景,我的工作正在进行,因为它会成功更新答案。 – 2011-05-30 23:04:27

回答

-2

在我的应用程序中,我使用SESSION来存储登录用户的值。例如$_SESSION['site1']['bakcend']['loggedin']=1;比在其他地方进行会话检查。他们当然都在同一domain.tld如果你使用上面的例子$_SESSION['site1']['bakcend']['loggedin']=1;如果你有很多部分,你将需要很多检查。但这只是一个意见,有一个更大的灵活性的地方。

您也可以使用cookie。

+0

$ _SESSION是唯一的PHP,需要handeling – borrel 2011-05-27 08:55:06

+0

如果您删除downvote,我将不胜感激。我也添加了cookies作为选项:) – RRStoyanov 2011-05-27 08:56:01

+0

在这个mater中使用cookies不安全 – borrel 2011-05-27 12:20:25

0

在PHP中,您可以使用session_set_save_handler来指定会话是如何持久化和恢复的。我猜Django和Ruby On Rails提供了类似的方式

2

Google完全在.google.com域运行,这就是为什么他们使用单个cookie在应用程序中识别您绝对没有问题。如果您的应用程序都在同一个域上运行,那么我会说继续并编写一个自定义实现来授权用户使用共享会话cookie。

但是,如果情况并非如此,那么最好在应用程序中分别实施一种更流行和广泛使用的SSO方法,如OAuthOpenID,并让用户集中应用程序进行身份验证,或让他们通过外部提供商(如Facebook或Google,支持通过OpenID进行身份验证)进行身份验证

您可以运行自己的OAuth或OpenID端点,在该端点上用户注册,然后通过此端点进行身份验证你的任何应用程序。

0

只是存储在数据库矿石会议自己处理他们完全

,最好的方法是创建一个特殊的表这 小心为PHP希望在此时,相应的存储之前,存储这些数据sialized所以反序列化字段作为序列化的数据实在是太难了在PHP处理

你有 $ _SESSION 和session_set_save_handler() ,但我认为这是更好地为您自己使它

确保所有网站使用单个cookie域(ajax onload(试图获得此coockie),或保持相同的域)

相关问题