2011-01-27 14 views
1

Windows認証(Active Directory)セキュリティを使用する.Net 4.0アプリケーションがあります。私は自分のハンドラを書いて、ページ名を見てユーザが現在のページにアクセスできるかどうかを調べ、その特定のページにアクセスできると定義されている適切なADグループにいるかどうかを調べることにしました。簡易ADアプリケーションセキュリティ

このアプリケーションは、企業ドメインでのみ実行されるイントラネットアプリケーションです。

私は単純に "System.Web.HttpContext.Current.User.IsInRole"を使用します。

ユーザーがグループに所属している場合、私は通常どおりにプロービングします。ユーザーがグループに所属していない場合は、ユーザーを「アクセス不可」ページにリダイレクトします。

私の質問は...(IsInRole)は、ページがロードされるたびに(PageLoad()で)、すべてのページがページをロードするたびにユーザーをページに対して検証するメソッドを呼び出します。 )

私はこれについてより効率的であるとお考えですか? (少なくとも、検証コードを呼び出す前に "!PostBack"テストを行うことはできますか?)セッション変数やCookieを使用するのはどうですか?

アドバイスはありがとうございます!

P.S. - 過去にメンバーシップ・プロバイダーを使用し、このアプリケーションで使用していると考えましたが、私はそれに反対しました。私がやろうとしていることはとてもシンプルで、メンバーシップ提供のすべてのものでデータベースやコードを駄目にしたくないのです。

答えて

1

1つのアイデアは、web.config like hereの承認セクションを使用することです。

もう1つの方法は、InitメソッドのIsInRoleCheckを実行する基本クラス(ページタイプの)からすべてのページを派生させて、誤って忘れずにコード全体を繰り返す必要がないようにすることですページ。

+0

これは私がやっていることです、すでに。私はタイプページの基本クラスからすべての私のページを派生しています。それは私が "IsInRole"を行う基本ページです...私のポストは、これが良い解決策であるかどうか基本的に尋ねていました。私がここで、そしてASP.NETで読んだことに基づいて、それはそうであるようです。だから、私はそれに行くつもりです! – Shayne

1

あなたはマスターページを使用していますか?

もしそうなら、あなたの認証の呼び出しをmasterページのPage_Loadに入れてください。それはあなたのmasterpageを使ってどのコンテンツページにもカスケードします。