2

Authorize属性を使用してControllerまたはActionMethodへのアクセスを制御できることは知っていますが、よりきめ細かい制御についてはどうでしょうか。たとえば、ユーザーの役割に基づいて特定のフィールドを許可/禁止するのが一般的です。たぶん、従業員のプロファイルでは、従業員は自分のプロファイル情報を編集できますが、上司だけが自分の役職を変更できます...

最適には、ビュー、モデル、およびコントローラーを通常どおりに開発し、サイト管理者が必要な粒度で認証を構成するために使用できる構成ページをWebサイトに配置できるようにしたいと思います。言い換えれば、プログラマーはそれについて心配するべきではありません(システムのその特定の部分を書いたり統合したりする人を除いて)。

DisplayForとEditorForが属性をチェックして、フィールドをReadOnly、Hiddenなどとしてレンダリングすることを想像できます。属性は、実行時に何らかの承認プロバイダーから追加される可能性があります。

問題は、すでにこれを行っているフレームワークまたは何かがそこにあるかどうかです。

4

2 に答える 2

1

ビューに表示される前に、各モデルのメタデータとそのプロパティを変更できるようにするカスタム ModelMetaDataProvider を記述します。組み込みのヘルパーは、メタデータ値が ShowForEdit = false または ShowForDisplay = false の場合、フィールドをレンダリングしません。

ルール エンジンまたはその他の ACL を利用して、各モデルおよびプロパティのメタデータを操作し、組み込みのヘルパーに触れることなく、探しているほとんどの動作をすぐに取得できます。より詳細な制御が必要なエッジ ケースでは、独自のヘルパーを作成し、metadata.AdditionalValues ディクショナリでより複雑なデータを渡すことができます。

于 2012-06-27T20:39:08.910 に答える
0

HtmlHelper を使用して、フィールド レベルでセキュリティを実装できます。次の例では、テキスト ボックスのみの実装を使用していますが、すべてのタイプのコントロールに簡単に拡張できます。

http://bartreyserhove.blogspot.ca/2008/12/field-level-security-using-aspnet-mvc.html

于 2012-04-19T01:14:52.130 に答える