6

ASP.NET サイトの 1 つにログインできないという報告が寄せられています。IIS ログを確認すると、ログオン後に FormsAuthentication Cookie がブラウザによってキャッシュされていないようです。

「ユーザーがブラウザで Cookie を受け入れないように設定した」ほど単純ではないと思います
。 - たとえば、ASP.NET セッション Cookie は正常に機能しているようです。
b) これらは通常、Cookie をオフにする方法さえ知っているようなユーザーではありません。

ですから、それは別のものでなければならないと思います。ASP.NET FormsAuthentication Cookie が機能しなくなる原因となる可能性があるのは、ユーザーがブラウザーで Cookie を拒否するように設定するだけでなく、どのような問題ですか?

編集:たとえば、別の質問へのこの回答は、フォーム認証 Cookie が大きすぎるためにドロップされることがあることを示唆しています。

編集: 私たちのサイトの 1 つの FormsAuthentication Cookie は 233 バイトです。これは少し大きいですか? 小さくできますか?多分それは役立つでしょう。

編集: コードFormsAuthentication.SetAuthCookie()で andResponse.Redirect()の代わりにFormsAuthentication.RedirectFromLoginPage()- が使用されていることに気付きました。

4

7 に答える 7

4

サーバーに適切な時間/タイムゾーン構成がなかったため、同様の問題が発生しました(formsauthentication cookieではなく、スティッキーロードバランサーcookie)。そのため、cookieの有効期限が現在の時刻より前である場合がありました。ユーザーのマシンで。

ここを参照してください:期限切れの値はCookieとキャッシュに対してどのように機能しますか?

それが役に立てば幸い

于 2010-10-20T17:26:29.150 に答える
2

ユーザーが 2 つの異なるドメインを介して Web サーバーにアクセスしている可能性はありますか? たとえば、www.foo.com にアクセスして認証 Cookie を取得し、次に www.bar.com にリダイレクトすると、www.bar.com に送信されるリクエストには、www.foo.com によって設定された Cookie は含まれません。 .

この問題は、cookie を htp://login.foo.com に設定してから htp://content.foo.com にリダイレクトした場合にも発生します。ただし、*.foo.com に適用されるように、ワイルドカードを使用して Cookie を構成できると思います。

編集:この回答に実際にクリック可能なガベージリンクがないように、意図的に「http」のスペルを間違えました。:)

于 2010-08-16T18:05:56.747 に答える
2

同じ Web アプリケーションと通信するために複数のドメインを使用していますか? Cookie はドメイン固有のものであることに注意してください。www.mydomain.com <> www.mydomain.net <> my.domain.net です。

web.configs にマシン キーがありますか?

于 2010-10-21T02:03:42.097 に答える
2

Web サーバー名または DNS 名の一部にアンダースコアが含まれている可能性がありますか?

例えば:

www2_http.mydomain.com

セッションが定期的に動作しない開発段階で、その問題が発生したことを覚えています。マシンのドメイン名からアンダースコアを削除すると、問題が解決しました。

よろしく

于 2010-10-20T09:16:59.600 に答える
2

サイトが Web ファームで実行されている場合、すべてのサーバーに同じマシン キーを設定する必要がある場合や、ユーザーがサーバーを切り替える場合、認証チケットを復号化できない場合があります。

との違いは、最初の は Cookie が無効になっている場合にも機能することです (実際には、認証されたユーザーを追跡するためにクエリ文字列パラメーターを使用しますRedirectFromLoginPage()) SetAuthCookieResponse.Redirect()

于 2010-10-19T17:49:53.173 に答える
1

アイドル タイムアウトがあります。ログインしてからしばらく何もせずに、サイトに再度アクセスしようとしていますか? あなたはそれをチェックするかもしれません。また、タイムアウトがスライド タイムアウト (最後のリクエストから 20 分後など) に設定されているか、固定タイムアウト (ログインから 20 分後など) に設定されているかを確認します。スライディングタイムアウトはデフォルト設定ではないと思います。

于 2010-08-16T19:16:19.060 に答える
0

次の手順を試してください。

http://blogs.msdn.com/b/rahulso/archive/2007/01/17/troubleshooting-cookies-a-case-study.aspx

ずいぶん前に書きましたが、しっかりとフォローすれば、根本的な原因が見つかる可能性が高くなります。

ここで重要なのは、根本原因の切り分けです。そもそもなぜそれが起こっているのかを理解すれば、問題を解決するのは非常に簡単です.

ラフル

www.dotnetscraps.com

于 2010-10-20T05:21:27.927 に答える