1

わかりました、ここに問題があります:

認証を共有すると思われる www.mysite.com と blog.mysite.com (偽のサイト名) の 2 つのサイトがあります。ログインページは www.mysite.com/login/login.aspx にあります

現在、ブログ Web サイトには、次の認証セクションを含む web.config があります。

<authentication mode="Forms">
  <forms timeout="50000000" 
   loginUrl="http://www.mysite.com/login/login.aspx"
   defaultUrl="~/"/>
</authentication>
<authorization>
   <deny users="?"/>
</authorization>

ヒットblog.mysite.com/andrey/page.aspxすると、サイト上のログインページにリダイレクトされwwwます。本当の問題は、「rededitect」クエリ文字列には相対ページ URL ( ) のみが含まれるため、ログインすると、開始した場所ではなくandrey/page.aspxにリダイレクトしようとするため、もちろんすべてが失敗することです。www.mysite.com/andrey/page.aspxblog.mysite.com/andrey/page.aspx

ログインページにバウンスするときに、メンバーシップオブジェクトにフルパスを「リダイレクト」クエリ文字列パラメーターに入れるように指示する方法はありますか?

ありがとう!アンドレイ

4

1 に答える 1

1

各ドメインに独自の web.config があると仮定すると、これでうまくいくと思います。

1) www.mysite.com と blog.mysite.com の両方のログイン ページを作成します。
2) 両方に同じメンバーシップ データベースを指定します
。 3) 両方に同じメンバーシップ applicationName 属性が設定されていることを確認します。

<membership><providers><add applicationName="mySite">

4) 両方に同じフォーム名が設定されていることを確認します。

<authentication mode="Forms"><forms  name="mySite">

これにより、両方のサイトが同じメンバーシップ データベースと同じ認証 Cookie を使用するようになりますが、それぞれのログイン ページが使用されるため、戻り URL は問題ありません。


FormsAuthentication.SetAuthCookie メソッドを呼び出して、http リファラーに手動でリダイレクトできますか?


FormsAuthentication.RedirectFromLoginPageのドキュメントでこれを見ました

デフォルトでは、ReturnUrl 変数は現在のアプリケーション内のページを参照する必要があります。ReturnUrl が別のアプリケーションまたは別のサーバーのページを参照している場合、RedirectFromLoginPage メソッドは DefaultUrl プロパティの URL にリダイレクトします。現在のアプリケーション外のページへのリダイレクトを許可する場合は、フォーム構成要素の enableCrossAppRedirects 属性を使用して、EnableCrossAppRedirects プロパティを true に設定する必要があります。セキュリティに関する注意セキュリティに関する注意:

アプリケーション間のリダイレクトを許可するために EnableCrossAppRedirects プロパティを true に設定すると、セキュリティ上の脅威になる可能性があります。クロスアプリケーション リダイレクトが許可されている場合、サイトは、ログイン ページを使用して Web サイト ユーザーがサイト上の安全なページを使用していると信じ込ませる悪意のある Web サイトに対して脆弱です。アプリケーション間のリダイレクトを使用する際のセキュリティを向上させるには、RedirectFromLoginPage メソッドをオーバーライドして、承認された Web サイトへのリダイレクトのみを許可する必要があります。

そのプロパティをいじることはまったく役に立ちますか?

于 2009-09-16T21:58:53.283 に答える