私は単純な監査を実行する任務を負っています。この監査では、ユーザーが要求したすべてのページを記録し、ページのデータを保存し、既存のセキュリティ トリミングに基づいてアクセスが許可または拒否されたかどうかを確認します。
任意の時点で誰でも開かれる可能性のあるファイルに書き込みを試みるすべてのアクティブなセッションとは対照的に、Application_Start でテキスト ファイルを開くという方針に沿って考えています。はい、私はこれの問題を知っています。理想的には、自分のソリューションにどのようにアプローチしているかについて、適切なアプローチまたは助けが必要です。
現在のコンテキストがセッションからページにアクセスできるかどうかを確認するカスタム クラスがあります。そのクラスを利用して、リクエストされたページの詳細と、リクエストの成功/拒否の結果を渡したいと考えています。問題は、私があまり熟練しておらず、学ぶべきことがたくさんあることです。
私は次のようなことを考えています;
if (File.Exists(@"\\MyServer\ICT\EFOSMS_AUDIT\" + DateTime.Today + ".txt"))
{
StreamReader read = new StreamReader(@"\\MyServer\ICT\EFOSMS_AUDIT\" + DateTime.Today);
}
else
{
File.OpenWrite(@"\\MyServer\ICT\EFOSMS_AUDIT\" + DateTime.Today);
}
ファイルを開いて、アプリケーションの実行中は開いたままにしておきます。
次に、上記のクラスで、いくつかの既存のコードが AD グループをチェックします。
CustomPrincipal principal = HttpContext.Current.User as CustomPrincipal;
if (!principal.IsInAnyRoles(roles))
{
Page.Response.Redirect("~/fos/AccessDenied.aspx");
//Write to file that is open at application level here??
return;
}
達成しようとしていることは頭ではわかっていますが、これが最善の方法であるかどうかは完全にはわかりません。これを簡単にする既存のクラスがあるかどうかはわかりません。私は StreamReader、StreamWriter、File.Exists、File.Open を使用しています。
誰かが正しい方向にナッジを与えることができますか.
ありがとう