質問

MVCアプローチの使用を開始したのはごく最近のことであるため、ここでは、これは簡単に説明できると思います。

アクセス制御はどこに配置しますか

  1. ビューで?テンプレートにはスイッチとフラグ以外のロジックは必要ないので、実行可能性が最も低いオプションのように聞こえます
  2. モデルでは?各ビジネスオブジェクトは、尋ねる人に基づいて、それ自体について明らかにするデータを決定する必要がありますか?
  3. コントローラ内で?それが私が今持っている場所ですが、ビジネスルールの一貫性を保つのが難しくなります

または別のオプションがありますか

役に立ちましたか?

解決

これは、使用しているフレームワークに依存し、言語は使用可能な多くのツールを指示します。

高レベルから、アクセスポイントでアクセスセキュリティを構成する必要があります。また、アプリケーションの複数の部分から自律的または再利用されると考えられるすべてのレベルでアクセスセキュリティを再確認する必要があります(セキュリティがロジックレイヤーを使用する同僚のポータルによってチェックされたかどうかは誰が知っていますか?など)。もう1つ心配なのはデータセキュリティです。これはデータに可能な限り近いものです(したがって、上記の#2には当てはまりますが、それは別個のものであることを理解してください)。

これは、アプリケーションロジックとドメインロジックの違いに似ています。特定のアプリケーション(Windowsサービスと比較したWebアプリなど)に固有のロジックがある場合、そのロジックはそのアプリケーションでのみ定義する必要があります。一部のロジックがアプリケーション間の境界を越える場合(アプリケーション間で再利用可能)、それはドメインロジックとして適格であり、モデルで定義する必要があります。アプリケーションはドメインロジックを使用できますが、所有するべきではありません。

他のヒント

モデル(別名データ)セキュリティの場合、モデルは「制御」します。アクセスとコントローラーは「促進」します。アクセス。これにより、コントローラーとは無関係にモデルを再利用でき、モデルを使用する異なるコントローラー間で必要な一般的なコード複製を無効にしない場合は最小限に抑えられます。

たとえば、車、運転手、およびキー。 (それぞれ、モデル、コントローラー、API)。非常に小さなインターフェイス(キー== API)により、モデルはAPI(キーフォブ)ごとにコントローラーアクセスを許可または拒否します。さまざまな種類のアクセスが許可されています(バレットキー、所有者キー、所有者FOB)。コントローラーは、Valetキーインターフェイスを使用して、グローブコンパートメント、トランク、ガスタンクなど、モデルの一部のデータ/機能にアクセスできません。これは基本的に、非常に小さなAPI /コマンド表面積でコントローラーを識別および分類することにより、モデルによって実装されるロールベースのアクセスです。

これは、モデルのデータ(車の機能とコンパートメント)にアクセスするために基本認証のみを必要とする他のコントローラー(異なるドライバーを持つ車)がモデルを使用できることを意味します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top