3

バックグラウンド:

  • AspNet Web アプリ / C# 3.5
  • IIS7
  • VS 2010
  • ウィンドウズ7

ユーザーが認証されると、次のように Cookie を作成します。

var cookieASP = FormsAuthentication.GetAuthCookie(user.Id, true);
cookieASP.Domain = "x.y.local";

はい、domainこの例ではハードコーディングされています。

Firefox 11 で Cookie ビューア拡張機能を使用するとdomain、Cookie が :.x.y.localであり、先頭に.. w.x.y.localと の間でCookie を共有できることはわかっていますq.x.y.local。Ok。

しかし、ユーザーが切断をクリックしても、彼は追い出されません...

 var cookieAsp = System.Web.Security.FormsAuthentication.GetAuthCookie(u.Identifiant, true);
 cookieAsp.Expires = DateTime.Now.AddDays(-10);
 Response.Cookies.Set(cookieAsp);
 FormsAuthentication.SignOut();

cookieAsp.Domainデバッガーを使用すると、それが nullであることがわかります。また、Cookie はブラウザの Cookie から削除されません。

Cookie ドメインを (ブラウザーから直接) 編集し、そのドメインを先頭のx.y.local なし.に設定すると、Cookie が削除され、ユーザーが切断されます。

これ.が追加された理由と、ブラウザがよく理解していない理由がわかりません。

編集(私が推測する主な重要性):設定しないdomainと、IE8(8のみ)がCookieを理解できないため、このようにしています...

4

1 に答える 1

1

Cookie を削除する場合は、削除する Cookie の正確なドメインでCookie を指定する必要があります。Cookie ドメインはリクエスト時にブラウザーから送信されないため、デバッガー セッション内で検査しようとすると常に null 値が返されます。

Response.Cookies.Set(cookieAsp);追加する前にcookieASP.Domain = "x.y.local";

于 2012-11-29T08:44:38.240 に答える