マルチテナント Rails 3 アプリケーションがあります。私は共有データベース アプローチを使用しています (すべてのスコープは tenant_id です)。
アプリケーション コントローラーのルーティングを設計するには、次の 3 つの異なるアプローチを考えることができます。
1) 各テナントに basecamp スタイルのサブドメインを設定します (例: customer1.myapp.com/projects 、 customer2.myapp.com/projects )。
2) myapp.com/customer1/projects 、 myapp.com/customer2/projects などのテナント識別子を使用して各ルートをスコープします。
3) ルーティングをマルチテナンシーに対して透過的にします。Tenant_id は、@user オブジェクトに tenant_id 属性があると仮定して、現在ログインしているユーザー (アプリケーション コントローラーの before_filter など) から取得されます。例: myapp.com/projects
私の質問は次のとおりです。
A)セキュリティ、開発の容易さ、コードの拡張性、およびエンドユーザーの観点から、これらのアプローチのそれぞれに利点または欠点はありますか? それとも純粋に開発者のスタイルの問題ですか?
B) #1 では、認証が成功した後にユーザーを customer1.myapp.com に転送する共通のログイン URL (例: login.myapp.com) を使用できますか? サブドメイン間でセッション Cookie を共有する際に問題はありませんか?