3

ユーザーがログインしているかどうかを判断するために使用するコードがあり、これを ASP.NET Web サイトのすべてのページに配置して、ログインしているユーザーだけが表示できるようにしたいと考えています。問題は、サイトが複数のプロジェクト/ソリューションに分割されているため、単一のコードを維持するのが難しい場合があることです。

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

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

明確にするために、私はすでにログインソリューションを持っています。各ページでのログインの確認を探しています。

4

4 に答える 4

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

于 2012-04-09T16:55:22.743 に答える
1

@jrummellが述べたように、MembershipProviderこれは素晴らしいオプションですが、カスタムログインソリトンを作成している場合は、このリンクを確認してください。このリンクには、非常に簡単なログイン実装が段階的に含まれています。

于 2012-04-09T16:58:29.587 に答える
1

ログイン ソリューションが処理され、機能しているように見えるので、page_init をオーバーライドするクラスを作成することが最善の選択肢のように思えます。これは、他のソリューションに含めることができる別のプロジェクトでそのクラスを作成するだけで、他のプロジェクト間で機能します...正直なところ、これはロジックを複数のプロジェクトにまたがる最も簡単な方法です..これも今後は 1 つの場所を更新するだけでよいため、簡単に維持できます。

MasterPages を使用している場合、すべてのページをヒットする必要はありません。特定の MasterPage にそれを含めて、認証でその MasterPage を使用するようにすべてのページを設定することができます。

于 2012-04-09T17:20:31.257 に答える
0

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

于 2012-04-09T16:59:50.653 に答える