在不同的应用平台之间共享会

时间:2011-05-27 08:46:29

标签: php django ruby-on-rails-3 session

我有一个场景,想要你们的意见。

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

我知道某种中央身份验证服务器。其中一些是casjosso

你们对此有什么看法?我想要像Google Apps这样的行为,当我登录Gmail时,我也可以自动登录GoogleDocs。

请分享您的想法,如何实施此方案?

4 个答案:

答案 0 :(得分:2)

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

但是,在更不可能发生这种情况的情况下,您最好在应用程序中单独实施一种比较流行且广泛使用的SSO方法,例如OAuthOpenID并为您的用户提供一个集中的应用程序进行身份验证,或让他们通过外部提供商(如Facebook或Google,支持通过OpenID进行身份验证)进行身份验证

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

答案 1 :(得分:0)

在PHP中,您可以使用session_set_save_handler指定会话的持久性和恢复方式。我猜Django和Ruby On Rails提供类似的手段

答案 2 :(得分:0)

只需将会话存储在db ore中即可自行处理

最好的方法是为此创建一个特殊的表 请注意,因为序列化数据太难以处理,因此在存储在适当的字段之前,要将此数据存储为sialized以便反序列化

在php中你有     $ _SESSION     和session_set_save_handler() 但我认为你自己做得更好

确保所有网站都使用单个Cookie域(ajax onload(尝试获取此coockie),或保留相同的域名)

答案 3 :(得分:-2)

在我的应用中,我使用SESSION来存储登录用户的值。例如$_SESSION['site1']['bakcend']['loggedin']=1;比在其他地方进行会话检查。它们当然都在同一个domain.tld如果您使用上面的示例$_SESSION['site1']['bakcend']['loggedin']=1;,如果您有许多部分,则需要进行大量检查。但这只是一种观点,有一个更灵活的地方。

您也可以使用cookies。