1

asp.net 4.0アプリケーション(.NET 1.1からアップグレード)でフォーム認証を使用しています。FormsAuthenticationTicketオブジェクトを明示的に作成し、それを暗号化して(FormsAuthenticationメソッドを使用して)、Cookieでクライアントに送信します。FormsAuthentiation.RenewTicketIfExpired()を使用して、認証Cookieのスライド有効期限を設定します。

Fiddlerを使用して、FormsAuthenticationTicketタイムアウトの途中で発行された新しいセッションCookieを見つけることができます。

formsauthenticationタイムアウト=2分、セッションタイムアウト=20分の場合

すなわち

hh:mm:ss

10:00:00ユーザーがログインします

10:01:10ポストバックが発生します

その後、新しいセッションが再作成され、ログアウトされます。しかし、私はセッションを20分ごとにタイムアウトするように設定しました。さまざまなformsauthenticationタイムアウト値を試しましたが、タイムアウトの途中で常に新しいセッションが作成されます。

これが発生しないように、formsauthenticationタイムアウトを非常に大きな値に設定する必要があります。

.NET 1.1からのアップグレード前は、このような問題はありません。

誰かが理由を知っていますか?これは、asp.net 4.0でスライド式の有効期限を処理するためのバグですか?

4

2 に答える 2

1

私のように誰かがこれにぶつかった場合に備えて、質問が非常に古い場合でも回答を書きます。

これはバグではありません。デフォルトでSlidingExpiration=yesを設定しているため、タイムアウトの途中で新しいチケットが発行されます。

スライド有効期限がオンの場合、タイムアウト期間の半分以上が経過すると、FormsAuthentication はさらに x 分の間有効な FormsAuthentication チケットを再発行します。ここで、x はフォーム認証タイムアウト設定です。

技術的には、これはサーバーにヒットするすべてのリクエストで発生するはずですが(タイムアウトの半分がなくなった後だけでなく) 、いくつかのドキュメントではそれがどのように行われたかを述べていますが、おそらくパフォーマンス上の理由で行われておらず、一部のブラウザーは Cookie の設定を嫌うようです。それは頻繁に。

http://msdn.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.slidingexpiration.aspxを参照してください。

于 2014-03-13T07:30:37.737 に答える
0

サイトがリサイクルされている可能性があります。これは、いくつかの理由で発生する可能性があります。最近気になったのは、サイトのディレクトリ構造が変更されたときです (フォルダーの追加など)。

それがどこで起こっているかを知っているので、リサイクルを引き起こしていないことを確認してください.

于 2011-04-13T05:20:06.693 に答える