Rails 3多租户应用程序设计 - 是否使用子域?

时间:2012-08-22 14:16:12

标签: ruby-on-rails routing subdomain multi-tenant

我有一个多租户rails 3应用程序。我正在使用共享数据库方法(所有范围都是tenant_id)。

我可以想到设计应用程序控制器路由的3种不同方法:

1)为每个租户设置basecamp样式子域 例如,customer1.myapp.com / project,customer2.myapp.com / project

2)使用租户标识符限定每条路由 例如,myapp.com/customer1/projects,myapp.com/customer2/projects

3)让路由对多租户透明。 Tenant_id是通过当前登录的用户(for.e.g before_filter in application controller)获得的,假设@user对象具有tenant_id属性。 例如myapp.com/projects

我的问题是:

A)从安全性,易于开发,代码可扩展性和最终用户角度这些方法中是否有任何优点或缺点?或者它纯粹是开发者风格的问题?

B)使用#1,是否可以拥有一个通用的登录URL(例如,login.myapp.com),在成功验证后将用户转发到customer1.myapp.com?是否存在跨子域共享会话cookie的问题?

0 个答案:

没有答案