1

好奇心のために、セッション タイムアウトが 20 分の場合、次のようになります。

  1. ユーザーが Web サイトにアクセスします。初期セッション タイムアウトが開始されます。
  2. 同じページで 1 分後に$.post("/api/longrunningfuction", function() { alert("success"); })呼び出されます。
  3. ポストコールは、戻ってくるまでに 10 分かかります (私の質問が伝わりやすくなるように、現実的ではないことを願っています)。

残り時間は次のようになります。

  1. ポストコールが戻ってセッションを延長したため、20分?
  2. 10 分 (コール ポストはセッションを延長しましたが、ポストが戻るまでに 10 分かかりました)。
  3. 他の?
4

2 に答える 2

1

セッション拡張は、フォーム認証Cookieを応答に書き換えることによって機能します。より具体的には、フォーム認証のスライド式有効期限を有効にしている場合(通常はセキュリティ上の理由から推奨されません)、リクエストがサーバーに送信されると、フォーム認証モジュールはリクエストの開始時にこのリクエストをインターセプトし、フォーム認証Cookieを復号化しますフォーム認証チケットを抽出し、このチケットの有効期限を変更して、応答に新しいCookieを追加するため。これはすべて、リクエストの開始時に発生します。これは、その瞬間からさらに20分(またはタイムアウトが定義されているもの)でセッションが延長されることを意味します。

次に、クライアント(および更新されたフォーム認証Cookie)に応答を返す前に、要求全体が完了するのに10分かかると仮定します。クライアントがこのCookieを受信すると、有効になるまであと10分かかります。

于 2013-02-22T13:03:35.870 に答える
1

セッション終了イベントのドキュメントには、次のように書かれています(強調は私のものです)

Timeout セッションのリクエストが行われずにプロパティで指定された分数が経過すると、セッションは期限切れになります。

したがって、残り時間は 10 分です。

フレームワークのコードは見ていませんが、応答時に認証 Cookie の期間を設定することで、セッションの期間が制御されます。したがって、サーバー側のコードが完了したときに新しい Cookie が送信されたとしても、リクエストを受信したときに新しい有効期限が計算されるのは当然のことです。有効期限が計算されてからクライアントに返されるまでに 10 分が経過した場合、10 分分のセッションが失われたことになります。

于 2013-02-22T13:04:08.137 に答える