4

したがって、URL「mysite.com」にサイトがあり、「subdomain.mysite.com」に別のサイトがあります。ユーザーアカウントは「mysite.com」に保存されているため、「subdomain.mysite.com」にログインする必要がある場合、ユーザーを「mysite.com」に連れて行き、資格情報を入力して通常どおり認証し、認証が確実に行われるようにします。次のように Cookie でを設定することにより、「subdomain.mysite.com」で Cookie を使用できdomainます。

HttpCookie cookie = FormsAuthentication.GetAuthCookie(username, true);
cookie.Domain = ".mysite.com";
Response.Cookies.Add(cookie);

次に、それらを「subdomain.mysite.com」にリダイレクトすると、ユーザーはそこで認証されます。

ログアウト時以外はすべて正常に動作します。ユーザーが任意のサイトからログアウトしようとすると、期待どおりに認証 Cookie を削除します。

FormsAuthentication.SignOut();

しかし、何らかの理由で Cookie が削除されず、ユーザーはログインしたままになります。

直接使用してCookieを削除しようとしましRequest.Cookies[FormsAuthentication.FormsCookieName]たが、まだ何もありません。Chrome は、何らかの理由で Cookie を非常にしっかりと保持しています。Chrome の開発者ツールで確認できます。

私は何を間違っていますか?ヘルプ!

4

1 に答える 1

7

さて、問題の解決策を見つけました。

HttpCookie cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
cookie.Domain = ".mysite.com";
cookie.Expires = DateTime.Now.AddMilliseconds(-1);
Response.Cookies.Add(cookie);

ご覧のとおり、ここで 2 つのことが起こります。
- 処理している Cookie のドメインを明示的に再設定しています。どうやら、ブラウザにドメイン コンテキストを伝える必要があるようです。そうしないと、Cookie が見つからないだけです。
- Cookie を削除する代わりに、単に期限切れにします。

于 2013-07-18T01:06:32.263 に答える