2

ユーザー「jtirado」には役割「HR-Assistant」が割り当てられており、ルート「mymvcapp / employee / edit / 1452」にアクセスして、従業員(id:1452)データを編集できます。

このユーザーは「HRアシスタント」であるため、従業員の電話番号と電子メールを変更したり、従業員の給与を表示したり、金額を編集したりすることはできません。

電話番号、電子メール、給与はdabataseフィールドであり、ビューでは「asp.net-mvc-control」または「HTML-control」で表されます。したがって、ユーザーの役割に基づいて、これらのコントロールへのアクセスを制限したいと思います。

以前の経験

これは、MasterPage、BasePageクラス、およびRoleBasedAccessControlデータベースモデルを使用して、従来の3層ASP.Net3.5Webフォームアプリケーションに対して以前に実行しました。

MasterPageは、割り当てられた役割に応じて、ユーザーがアクセスできるオプションメニューを作成します。

BasePageクラスは、ユーザーが必要なページにアクセスできるかどうかを確認し、アクセスできる場合は、ユーザーが編集できるコントロール(DdlClientType、TxtLastName、ChkIsActiveなど)を確認します。

このように、パーミッションを確認するためにif-thenセンテンスを使用する必要はありません。また、C#コードを変更することなく、パーミッションを付与して、必要な数のロールを作成できます。

この新しいMVCアプリに同じRoleBasedAccessControlデータベースモデルを使用することを計画しています。

問題

したがって、私の疑問は、ASP.Net MVC 3を使用してMasterPageクラスとBasePageクラスを実装する方法、またはこれを実現する別の方法があるかどうか、そして別の方法で実装する必要があるかどうかについてです。

ViewMasterPageはWeb-Forms-MasterPagesと同等のMVCであるように私には思えます。Razorのレイアウトページについても聞いたことがあります。

とにかく、私はこれらすべてをコントローラーで処理する必要があると思います。

私が使用するのは:

  1. ASP.NET MVC 3.0
  2. かみそり

私はこれらの投稿をチェックしました:

asp.netmvcユーザーのアクセス許可とビュー

フォームフィールドへのアクセスを制御するためのベストプラクティス

制御権限のベストプラクティス?

ASP.NETMVCマスターページ

安全なASP.NETMVCアプリケーションを実装する

しかし、それらは私の場合に完全には適合しません。

4

2 に答える 2

2

カスタムエディタテンプレートを使用して、そこにロジックを含めることができるようです。

ビューモデルでは、属性を使用して、使用するテンプレートを決定できます。UIHintを使用するか DataType属性を設定して、そのためのカスタムテンプレートを用意します。

次に、エディターテンプレートは、編集値をレンダリングするか、値を表示するか(または完全に非表示にするか)を決定できます。バインダーに同じルールを適用することを忘れないでください。そうしないと、ユーザーがアクセスできないデータを操作する可能性が広がります。

于 2012-08-29T02:47:24.237 に答える
1

Razorエンジンの問題の1つは、WebFormsのように、ページに「Controls」コレクションがないことです。したがって、ページ内のすべてのコントロールを繰り返し処理して、それらを使用して何かを行うことはできません。

とはいえ、サブクラスSystem.Web.Mvc.WebViewPage化するか、前の質問でSystem.Web.Mvc.WebViewPage<TModel>概説したように、「ベースビュー」のアイデアを引き続き使用できます。同様に、Controllerから継承すると、ベースコントローラーにも役立ちます。

ここで具体的な答えがあるかどうかはわかりませんが、モデルのプロパティにカスタム属性を追加して、どのロールがそれらにアクセスできるかを示しています。次に、のような組み込みメソッドをオーバーロード@Html.TextBoxFor()して、現在のユーザーのロールを渡します。オーバーロードでは、プロパティの属性に対してroles引数をチェックします。

あなたの場合、属性が機能しない可能性があり、代わりにデータベースから認証を読み取ります。同じアイデア、ただ異なる実装。

それがあなたを正しい方向に向かわせることを願っています。

于 2012-08-28T19:27:45.670 に答える