2009-03-11 9 views

答えて

3

私はそれを意味のあるところに置くことに投票します。私の認可品のほとんどは、AuthorizeAttribute(またはそれから派生した属性)を使用してコントローラーアクション(または一部のコントローラー)を装飾することによって処理されます。私のメニューのようないくつかのケースでは、各コントローラで計算し、フラグをViewDataに渡すのではなく、ビューのコード自体に権限チェックを入れることに頼っていました。モデルの特定の側面が特定のロールでのみ使用可能な場合がいくつかあります。その場合、私は、現在のユーザーとロールをとり、そこでチェックを行う方法でモデルを拡張することに頼っています。

0

M、V、またはCのいずれかを選択する必要がある場合は、Cが正しい場所です。しかし、私はあなたのアプリがすべてライブラリに含まれているアーキテクチャをお勧めします。UIは単なる薄いベニアです。あなたはコントローラからスタックを呼び出すことになりますが、コードはコントローラ内にありません。

MVCでは、モデルは単なるモデルであるか、または「ダムデータオブジェクト」です。状態を保持するように設計されており、動作を指示するべきではありません。このビューは、ユーザが対話するためのものであり、「ダム(dumb)」である。ビューはUIを処理します。コントローラはビ​​ヘイビアがどこにあるか、またはアプリケーションロジックがライブラリにある場合のビヘイビアへの入り口です。理にかなっている?

+3

を承認MVCのあなたの定義が間違っています。 MVCのMは最も重要な部分です。ダムのデータオブジェクトではありません。行動はMでなければなりません、これはあなたのビジネスロジックです。承認がビジネスロジックの一部であるかどうかは私には分かりません。 –

0

モデル。

コントローラは、さまざまな方法で切り替えるためのものです。表示は表示用です。

したがって、Modelレイヤーですべての認証コードを作成する必要があります。理想的には、すべて正常に動作します。そうでない場合、コントローラはユーザを適切なログインボックスに連れて行きます。

1

私は認証はクロスカッティングの問題だと思います。必要な場所に宣言的に適用できる1つの場所に配置する必要があります。

1

コントローラ!

あなたのビューは、ユーザーインターフェイスと表示のみを処理する必要があります。 モデルはシステムのデータを表す必要があります。 コントローラは、システムの仕組みのロジックを処理する必要があります。

ユーザーを認可するには、ビューから提供された資格証明を取得し、モデル内の何らかの種類の権限リストと照合してチェックを実行する必要があります。

これは、コントローラで行われます。 (モデル内のユーザーのリストと比較すると、マッチを返した場合)ビュー からユーザーの資格情報を取得します は、ユーザーに 他 ごみアクセス

関連する問題