2

私は困惑しています。FormsAuthentication をカスタム トークン (追加のユーザー データを格納) で使用する MVC3 アプリケーションがあります。IEで動作します。ただし、Firefox と Chrome では、Cookie には従いません。

Fiddler で調べると、ログイン時に応答で Cookie がクライアントに送信されますが、クライアントからの後続の要求 (ログイン後にメイン ページをロードするため) では、Cookie はサーバーに送り返されません。

私のコード:

var encryptedCookieString = FormsAuthentication.Encrypt(ticket);
  var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedCookieString);
  cookie.Expires = ticket.Expiration;
  HttpContext.Current.Response.Cookies.Add(cookie);

そしてクッキーを取得します:

var cookie = HttpContext.Current.Request.Cookies.Get(FormsAuthentication.FormsCookieName);

Auth 設定の web.config:

 <authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

Firefox と Chrome の両方のブラウザーを調べましたが、Cookie がオフになっている場所はどこにもありません。

最初はこれは localhost での開発の問題かもしれないと思ったので、トレーニング サーバーにデプロイしました。同じ話 - IE では動作しますが、Chrome や Firefox では動作しません。

手がかりはありますか?

アップデート

私の同僚はChromeでアクセスでき、彼のために働いていました. したがって、これは私の Chrome/Firefox の障害であると信じなければなりません。また、私は VPN を使用しており、開発マシンでリモート デスクトップを使用しています。これが問題の原因になっている可能性はありますか?

4

2 に答える 2

2

答えは: Cookie が大きすぎます。

これを理解するのに少し時間がかかりました。(DB へのクエリの繰り返しを防ぐために) Cookie に多くの余分なユーザー データを保存しており、Cookie はほとんどのブラウザーで許可されている 4Kb を超えています。

于 2013-01-10T14:46:49.597 に答える
0

formsweb.configの認証ノードに、または がある可能性はありますcookieless="UseDeviceProfile""AutoDetect"?

その場合は、次のように変更しますcookieless="UseCookies"

于 2013-01-03T01:28:44.097 に答える