0

企業がhttps://storea.mydomain.com https://storeb.mydomain.comなどを使用してログインできるようにする mvc アプリケーションがあり ます。

各ビジネスにはユーザーが作成されており、ビジネス ID と EmployeeId を一致させるテーブルがあります。ビジネス A の認証済みユーザーがビジネス B からの情報にアクセスできないように、アプリケーションをロックダウンしようとしています。

ユーザーがサブドメインへのアクセスを許可されていることを確認するのに最適な場所はどこですか? サブドメインが何であるかを確認する OnActionExecuted アクションをオーバーライドしてから、セッション値を調べて一致するかどうかを確認し、異なる場合はログアウトしますか。

それとも、これを行うためのよりエレガントな方法がありますか?

ベストプラクティスに関する提案とアドバイスは素晴らしいでしょう! ありがとうございました

4

3 に答える 3

1

カスタムAuthorize属性は、これを実行するのに適しているようです。HttpContext にアクセスできるメソッドをオーバーライドするAuthorizeCoreと、サブドメインに基づいてカスタム承認ロジックを実行できるようになります。

于 2012-06-18T05:55:46.027 に答える
0

このような場合、私はリポジトリ パターンを使用し、すべてのクエリ/データ アクセスで、ビジネス ID を含む where 句を渡すようにします。元:


select * from orders where orderid=@orderId and companyID=@companyId

不適切なクエリを防ぐためにデータ ルールを設定する必要があるため、クエリでこれを行うことは非常に重要です。たとえば、Authorize 属性でこれを行っても、誰かが別の会社の情報を読み込むためにデータを改ざんしていないことを保証するものではありません。

さらに、http://mvcsecurity.codeplex.com/ 拡張機能を使用して、ページに保存されている ID を保護し、改ざんを防ぐことができます。

于 2012-06-18T14:40:48.417 に答える
0

私が理解しているように、MVC アプリケーションは単一のデータベースを使用して、すべてのビジネスの情報を保存します。これが、Bussines A が Bussines B の情報にアクセスすることを心配する理由です。

私にとって、あなたのデータベースは、各ユーザーが所属するビジネスに応じて、どの情報にアクセスできるかを確認する場所です。

これにはサブドメインを使用する必要さえないと思います。

于 2012-06-18T06:18:44.147 に答える