0

MVC 4を使用してアプリケーションを構築します。重要な要件は、ビューレベルの監査です。つまり、ビュー/画面に誰がアクセスしたか(たとえば、個人の詳細)、ビューを作成するためのパラメーター、およびビューにいつアクセスしたかを表示できる必要があります。これは新しいアプリケーションであるため、この要件に対処するために必要なほとんどすべてのことを実行できます。

データベースはSQLServer2008になります。データアクセスにはEF4.x、場合によっては5.xが含まれますが、確実ではありません。

私の質問ですが、この機能の設計を開始するにはどうすればよいですか?そこにサンプルアプリケーションはありますか?

4

2 に答える 2

1

ビューレベルでの監査を気にしないでください。アクションを監査する方が良いと思います。これは、グローバルアクションフィルターを使用して実行できます(たとえば、ここ)。

于 2012-07-19T19:32:38.787 に答える
0

EF はビューではうまく機能しません。コードを手渡すストレートな ADO.NET 永続化レイヤーを使用する方が良い場合もあれば、Linq2Sql の方がビューを使用する方が少し優れている場合もあります (ただし、手動で接続する必要があります)。nHibernate はおそらく使用するのに最適な ORM でしょう。

編集:

@ user1469655 - MVC の仕組みについて非常に根本的な誤解があります。「ビュー」はページではありません。テンプレートです。あなたが考える「ページ」(つまり、特定の URL へのアクセス) は、実際にはルートとアクションという 2 つの異なるものを組み合わせたものです。アクションによって特定のテンプレート (ビュー) がレンダリングされる可能性がありますが、アクションとビューの間に必ずしも 1:1 の相関関係があるとは限りません。

「アクション」はコントローラのメソッドです。これは、ルートによって URL にマップされます。通常 (必ずというわけではありませんが)、これは次のようなことを意味します。

http://www.my.site/controller/action

ユーザーがこの URL にアクセスすると、アクション メソッドが呼び出され、ビューがレンダリングされる可能性があります。これは、任意のアクション メソッドによって自由にレンダリングできる html テンプレートにすぎないため、異なるアクションで同じビューをレンダリングできます。

したがって、何をしたいかは、実際に何をログに記録しているかによって異なります。ビューへのアクセスをログに記録しても意味がありません。実際には何の意味もないからです。あなたがしたいことは、アクションを介してアクセスをログに記録するか、場合によってはルートを介してログを記録することです。

これを行う最も簡単な方法は、すべてのアクションの前に呼び出されるグローバル アクション フィルターを使用することです。そのフィルターでは、必要な情報 (ユーザー ID、日付、時刻、アクション、リファラーなど) をログに記録できます。あらゆる行動を呼びかけました。ただし、無視されたルート (javascript、画像、css、直接ダウンロードされたファイルなどのコンテンツなど) に対しては呼び出されません。それらをログに記録する必要がある場合は、アクションを介してそれらへのアクセスを制御する必要があります。

ここにアクションフィルターに関する優れたチュートリアルがあります

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs

于 2012-07-19T19:29:23.287 に答える