3

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

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

1) 每个租户都有 basecamp 风格的子域,例如 customer1.myapp.com/projects 、 customer2.myapp.com/projects

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

3) 让路由对多租户透明。假设@user 对象具有tenant_id 属性,则Tenant_id 是通过当前登录的用户(例如应用程序控制器中的before_filter)获得的。例如 myapp.com/projects

我的问题是:

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

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

4

0 回答 0