コードで「権限のない」イベントを検出するのではなく、カスタムエラーを表示することをお勧めします。ユーザーがアクセス拒否ページにリダイレクトされると、SharePointは実際にエラーコード "401"(権限のないユーザー)を含むエラーをスローします。
web.configでは、401エラーのアプリケーションの動作を設定できます。 Webアプリケーションでカスタムエラーページを実行したことがある場合は、同じことです。あなたのweb.configファイルでCustomErrorノードを探して、このような何かにそれを変更します。
<customErrors mode="On" defaultRedirect="~/_layouts/CustomErrorPage.aspx">
<error statusCode="401" redirect="~/_layouts/AccessDeniedPage.aspx" />
</customErrors>
その後、あなたとあなたのCustomErrorPage.aspx AccessDeniedPage.aspxを作成し、12ハイブに展開。これらのページの背後にあるコードで
、あなたがしたいところはどこでもそれらをリダイレクトするためにPageLoadイベントを上書きすることができます。
protected void Page_Load(object sender, EventArgs e)
{
bool isLogged = HttpContext.Current.User.Identity.IsAuthenticated;
Response.Redirect("wherever");
}
注意あなたが必要な場合は、この時点で、あなたはまだSPContextオブジェクトへのアクセスを持っていることそれは(私はあなたがユーザーのグループメンバーシップに応じて特定のコードを書いたがっていると仮定しています)。
これはSharePoint固有の動作ではありません。すべてのASP.NETアプリはそのように機能します。サイト全体の設定を使用すると、すべてのページの読み込み時などにアクセス許可を確認するのではなく、実行する必要があるとき(つまりアクセスが拒否されたとき)にのみコードを実行できます。