2011-12-14 120 views
6

我要开发与跨域单点登录多站点应用程序(类似于谷歌帐户,有多个谷歌服务,如Gmail,Google文档,谷歌+):Rails中跨域的单点登录多站点应用程序?

multi applications, multi domains, single sign on

  • 要使用童装网站用户必须签署在父母的网站上。
  • 每个网站都有自己的逻辑,用户登录除外,积分和 发票。
  • 从子应用程序我必须能够登录到全球用户 帐户,花费用户点和生成一些服务的发票。
  • 注册表单,发票清单和管理点面板均为 只能从父网站/应用程序获得。

在Rails 3.1上实现这个最好的策略是什么?可伸缩性,性能和安全性非常重要。

  • 单轨或多轨应用?
  • 单个或多个数据库?
  • 全球服务在主要应用程序或作为一个单独的应用程序/引擎?
  • 如何实现单点登录?数据库中的单一会话ID或类似Facebook的oauth?
  • 如何通过子站点的请求实施支出点和生成发票?
+0

你采取什么办法? – Karolis 2012-06-07 21:37:27

+0

从@ david-sulc回答,用@ token.get('/ customaction')`来接收自定义数据。 – rogal111 2012-07-19 15:08:34

回答

-1

因此,让我们假设您在主应用程序中创建了User并迁移它。那么你需要做的是从其他应用程序访问这个数据库。这没有问题。首先,你需要到主应用程序的数据库连接定义添加到子应用程序的config/database.yml这样的:

parent_connection: 
    adapter: your_adapter_here 
    host: your_host_here 
    username: username 
    password: password 
    database: main_application_production 

然后创建一个模式叫用户,但不的棚架或某事。喜欢这个。只需像这样手动创建文件:

class User < ActiveRecord::Base 
    establish_connection :parent_connection # This uses the specified connection 
end 

在默认情况下,选择的连接是匹配环境名称的连接。你只需要指定变化。所以现在您可以像在主应用程序中那样访问User类。

+0

好吧,我知道如何建立从模型到选定数据库的连接,但这只是整个问题的一小部分。我需要一个解决方案/软设计模式/战略/模型如何解决可伸缩性,性能和安全问题。 – rogal111 2011-12-14 13:46:40