11

サブドメインベースの言語スイッチャーを実装する際に障害にぶつかります (en.domain.com は英語をロードし、jp.domain.com は日本語をロードします)。

単一のメンバーシップ システムを複数のサブ ドメイン (ASP.NET MVC C#) で機能させるにはどうすればよいですか?

web.config のエントリに追加domain="domain.com"することについて何かを見ました。<forms >それはできましたが、ローカルの Visual Studio 開発 Web サーバーでテストするときに機能しますか?

4

3 に答える 3

8

自分でクッキーを作成してみてください。

AccountControllerには、次のようなものがあります。

FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);

「Cookieコレクションを作成して追加する」。ドメインの変更は許可されていません (奇妙なことに、パスの変更は許可されています)。代わりに、コレクションに追加せずに Cookie を作成し、必要なプロパティを変更してからコレクションに追加します。

var a = FormsAuthentication.GetAuthCookie(userName, createPersistentCookie);
//if you're debugging right here, a.Domain should be en.example.com; change it
a.Domain = "example.com";
HttpContext.Current.Response.Cookies.Add(a);

ジェームズ

于 2009-07-25T09:55:26.993 に答える
4

このように、ドットプレフィックスを使用する必要があります。

<authentication mode="Forms">
    <forms domain=".tv.loc" loginUrl="~/signin" timeout="2880" name="auth" />
</authentication>
于 2010-06-30T15:46:53.390 に答える
0

問題は、リクエスト中にブラウザがCookieを送信する方法です。

Cookieは通常、単一のドメインに関連付けられています。これは、セキュリティ上の理由とパフォーマンスのためです。たとえば、ユーザーは自分のドメインのCookieを他のドメインに送信したくない場合があります。これは、Cookieに機密情報が含まれている可能性があるためです。

ブラウザは、en.domain.comとjp.domain.comで設定されたCookieを区別します。親ドメイン上にないため、一方のドメインからのCookieがもう一方のドメインに移動することはできません。

問題の解決策は、Cookieの生成の制御を引き継ぐことです。ASP.NET MVCはあまり使用していませんが、HTMLではなく、プロパティなどを使用して実行できると確信しています。これは非常に一般的なシナリオです。プロダクションボックスのCookieドメインを「domain.com」に設定する必要があります。これは正しいことです。ローカルボックスで作業している場合は、Cookieドメインを「」に設定する必要があります。

于 2009-07-25T08:50:23.427 に答える