10

レイヤー間を適切に分離して Web アプリを設計するために最善を尽くしています。私はリポジトリ パターンを使用しているため、Web フロント エンドによって呼び出される ObjectService によって呼び出される SQLObjectRepository があります。

私のオブジェクト モデルでは、ユーザーは 1 つ以上の領域に関連付けられており、アクセスできるオブジェクトをフィルター処理する必要があります。私の質問は、オブジェクトのクエリを実行するときに、コードをサービスに配置してオブジェクトのアクセス許可を設定するか、またはそのコードをリポジトリに配置する必要があるかということです。ユーザーが 2 つの地域のメンバーである場合、ユーザーをパラメーターとしてサービスに渡す必要がありますか、それともユーザーの地域をサービスに渡す必要がありますか?

4

1 に答える 1

4

私は...するだろう:

  • セキュリティ チェックは、好きな場所に適用できるように記述します。このようにして、要件の変更に応じてリファクタリングできます。

  • セキュリティ チェックが本当に常に適用される場合は、複数のサービスが同じリポジトリを使用する場合に共通のセキュリティを共有するように、リポジトリ レイヤーに配置します (言語がサポートしている場合はアスペクト内に配置することをお勧めします)。それ以外の場合は、サービス (ま​​たはサービスに作用するアスペクト) に配置します。

  • ユーザー オブジェクト全体をセキュリティ チェック メカニズムに渡します。

    • セキュリティ チェックが後でより複雑になった場合 (ユーザーの他のプロパティに依存)、API は変更されません。
    • それはより意味論的に理にかなっています-国のリストではなく、ユーザーが何かを行う許可を持っていることを確認しています。
于 2008-12-09T21:56:47.643 に答える