2010-11-18 17 views
0

私はフォーム認証を使用するWebサイトを持っています。問題は、同じプロダクションサーバーに複数のサイトをインストールしているということです。なぜなら、(この場合はドメインに基づいて)いくつかの異なるログインページが必要なためです。ドメイン固有のログインページの後に、残りのサイトは同じです。明らかに、これにはメンテナンスが多く必要です。新しいバージョンをサーバーに複数回インストールする必要があります(web.configファイルのログインページを変更する必要があります)。カスタムルールに基づいてフォーム認証のログインページを選択

私は、ディスク上の1つのフォルダにサイトをインストールし、IIS上のWebサイトに必要なすべてのドメインを持ち、httpモジュール(または他のいくつかのソリューション)を作る方法を考えましたドメインのリストとそのドメインのフォーム認証を与えます。この方法では、各サイトで使用されるログインページが、ドメインに応じて変更され、サーバー上で維持するサイトは1つだけです。

おかげ ダニ・アヴニ

答えて

1

私は、これはいくつかの方法を行って見ていると、それの多くは、あなたがIISで物事を設定している方法によって異なります。

すべてのドメインが同じIIS Webサイトにある場合、最も一般的な解決策は、httpmoduleまたは実際の.aspxページを作成して構成をロードし、要求されたURLに基​​づいてユーザーを適切なログインページに送信することです。ユーザーURLを同じにしたい場合は、 "Server.Transfer()"を実行することもできます。その後、web.configでは1つのログインページが設定されます。お互いのログインページで匿名ユーザーがアクセスできることを確認してください。

すべてのドメインが別個のIISサイトである場合は、その時点でサイトの異なるコピーを維持することをお勧めします。しかし本当の疑問はなぜあなたが別のログインが必要なのかです。

+0

なぜなら私は別々のログインが必要なのです。私は1つのシステムを持っていますが、販売している顧客のためにそれぞれ独自のログオンを望むパートナーがいくつかあります。 –

+0

私は、どのログインページをレンダリングする必要があるかを決める単一のログオンページを使用し、そのページをレンダリングするためにserver.transferを使用します。 –

+0

この方法をテストした後、この方法は機能しません。私はリダイレクタのlogin.aspxページを作成し、その中に単純なserver.transfer( "ActualLogin.aspx")コールをログインページの1つに配置しました。ユーザーがまだログインしていないためにActualLogin.aspxにデータを投稿しようとしていたため、最初はログインに失敗しました。したがって、ActualLoginPage.aspxはフォーム認証によって保護されています。そこでActualLoginPage.aspxフォームのアクションを変更しても動作しないLogin.aspxに送信しましたが、今はブラウザでクリックされたログオンボタンのイベントを取得しません。 –

0

私の職場には、あなたが説明しようとしていることを正確に行ういくつかのWebアプリケーションがあります。状況によっては、私たちが使用したアプローチがいくつかあります。

私たちが使用するより一般的なアプローチは、IIS上のすべての実際のサイトを同じディレクトリを指すようにすることです。ログインのロジックはURLを取得し、どのクライアントサイトがリクエストされているかを判断し、ログイン時にそれを考慮に入れます。実際のログインページはすべてのクライアントサイトで同じですが、使用するデータベースを決定するだけです。

これ以上のことをしたいのであれば、私たちが使っているもう1つのアプローチは、独自のMembershipProviderを作成することです。クラスがASP.NET認証プロバイダによって呼び出されている場合(Web.configのメンバーシッププロバイダをプロバイダに設定する場合)、HttpContext.Currentにアクセスする必要があります。

関連する問題