2012-04-09 12 views
3

ユーザーがログインしているかどうかを判断するためのコードがあります。これをASP.NET Webサイトのすべてのページに配置して、ログインしたユーザーのみが閲覧できるようにしたいと思います。問題はサイトが複数のプロジェクト/ソリューションに分割されているため、単一のコードを維持するのが難しいかもしれないということです。ASP.NETで認証チェックを行う場所

System.Web.UI.Pageを継承し、Page_Initを上書きするクラスを作成できたと考えていましたが、新しいページを新しいクラスから継承するようにすべてのページを変更する必要がありました。また、私はこれがプロジェクト全体で機能するとは思わない。

それで、私は別の側から問題に近づくことを考えました:AOPを使用します。以前はアスペクトを使用したことはありませんでしたが、PostSharpを使用して、すべてPage_Init(またはおそらくPage_Load?)のコードを挿入するAspectを書くことができるようです。これは簡単な解決策として機能するかもしれませんが、認証チェックを実行しないようにするページが必要な場合は、問題が発生する可能性があります。

私はすでにログインソリューションを持っています。私はちょうど各ページのログインを確認することを探しています。

+4

['MembershipProvider'](http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx)を使用していないのはなぜですか?これはすべてASP.NETによって実現されました。 – jrummell

+2

一般に、ASP.NETページは、ログインチェックを含む共通コードが集中しているマスターページ上に構築する必要があります。 2つのマスターページを作成し、1つはマスターページをチェックし、もう1つはマスターページを作成することができます。 – MarioDS

+0

@jrummellこれは十分に柔軟ではありません。実際のプロジェクトでは、カスタマイズ可能なプロジェクトに行くときには、MembershipProviderに行くことができません。右? – Pankaj

答えて

3

HttpModulesを調べます。 asp.netフレームワークはすでにプログラムされているので、モジュールはすべてのページリクエストで実行されます。それを記述してweb.configに追加するだけです。

http://msdn.microsoft.com/en-us/library/zec9k340(v=vs.71).aspx

編集:ここでは、BeginRequestイベント http://msdn.microsoft.com/en-us/library/ms227673(v=vs.85).aspx

+0

いいえ、システムは、Web.config内のロールを明示的に記述するのではなく、コードビハインドで同じコードを書くのに十分な柔軟性を備えています。 – Pankaj

+1

Webでロールを指定しません。configでは、モジュールを登録するだけです。認証モジュールの動作は完全にあなた次第です。web.configは「各ページ要求に対してこのモジュールを実行してください」と言っています。 – mafue

1

@jrummellあなたはカスタムログインsolitionを作成している場合は、そこに偉大なオプションですMembershipProviderだが、前述のようにハンドリング実証し、より良いリンクがあります、これを確認してくださいlinkかなり簡単なログイン実装を段階的に行っています

0

Windows Identity Foundationがこれを解決できます。 WIFの詳細については、http://msdn.microsoft.com/en-us/security/aa570351を参照してください。ホイールを再構築する必要はありません。 Webアプリケーションが1つしかない場合は、フォーム認証で十分です。

1

あなたのログインソリューションが処理され、動作しているように見えるので、page_initをオーバーライドするクラスを作成するのが最善の選択肢のようです。これは、別のプロジェクトにそのクラスを作成するだけで、他のソリューションに含めることができます。正直言って、それは複数のプロジェクトにまたがる最も簡単な方法です。 1つのロケーションだけを更新する必要があるため、簡単に管理できます。

MasterPagesを使用している場合は、すべてのページをヒットする必要はなく、特定のMasterPageにインクルードし、そのMasterPageを使用するすべてのページを設定することができます。

関連する問題