2011-07-24 2 views
0

私はStoreというドメインクラスを持つマルチテナントアプリを持っているとします。各テナントは自分の店舗のみを見ることができます。私は各店舗にGUIDを与えます。マルチテナントアプリでID用のGUIDを使用している場合は、実際にデータエンタイトルメントを確認する必要がありますか?

これはマルチテナントアプリであるため、各リクエストで私はになります。ユーザーがアクセスしたいデータにアクセスできることを確認してください。そうしないと、/ store/show/1を/ store/show/2に簡単に変更することができます。

しかし、私はGUIDを使用しているため、多かれ少なかれユニークであることが保証されています。このチェックを行う必要がありますか?ユーザーがシステム内の別のGUIDを推測する可能性は何ですか?

答えて

1

他のテナントに属する別の店舗のGUIDの偶然または意図的ないずれかに誰かがつまずくことはありません。リポジトリパターンを使用している場合は、リポジトリにロジックを追加して(基本的にすべてのクエリにWHERE StoreTenantID = UsersTenantIDを追加して)、ユーザーが探しているストアが表示されていることを確認します。

あなたは「きれいな」URLを持っていて、URLにストア名や番号を使用したいと思うかもしれないので、これを実装するのは害ではないかもしれません。そのパターンにマッチするカスタムルート(MVCの場合)があり、それに応じてリポジトリを更新します。

希望があれば、結論は私が先に進んでチェックをしているビットを無駄にすることです。

関連する問題