6

ASP.NETの「セッション」と「フォーム認証」の違いは理解できたと思います。セッションは基本的に、そのユーザーのセッションに固有の情報(おそらく検索フィルターの状態)を格納するために使用され、フォーム認証は、ユーザーが特定のものにアクセスできる必要があることを記憶するために使用されます。

私の質問は、フォーム認証のタイムアウトをセッションのタイムアウトより長くすることがなぜ望ましいのかということです。実際、デフォルトでは、web.configはフォーム認証のタイムアウトをはるかに長く設定します。

これが私が見る2つのシナリオです:

  1. フォーム認証が行われる前にセッションがタイムアウトします。ユーザーは検索フィルターなどを失い、保護されたページは表示されますが、外観が異なったり、さまざまなものがリセットされたりする可能性があります。nullさらに、開発者は、Sessionを使用するたびにSessionが発生することを心配する必要があります。
  2. フォーム認証は、セッションが終了する前にタイムアウトします。ユーザーはユーザー名とパスワードを再入力する必要がありますが、セッション情報がそのままの状態で(タイムアウトしていない限り)元のページに戻ります。null開発者は、セッションが1つの場所(ログイン時)にあることだけを心配する必要があり、必要に応じてそこで初期化できます。

なぜシナリオ1)がこれまで以上に望ましいのでしょうか?私は何かが足りないのですか?

4

1 に答える 1

5

重要なのは、セッションタイムアウトは他の設定よりも重要な設定です。認証タイムアウトを非常に長い期間に設定しても、サーバーリソースの手段でWebアプリケーションに影響を与えることはありません。ただし、セッションタイムアウトを長期間に設定すると、ハイステークスでメモリの問題が発生する可能性があります。

あなたはあなたの声明について正しいです。開発者として、私は1よりも2を好みます。ただし、セッションの有効期限を処理する簡単な方法があります。このSOの質問をチェックしてください。答えの1つは、セッションの有効期限に対する優れた解決策です。

protected void Session_Start(Object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated)
    {
        FormsAuthentication.SignOut();                         
        Response.Redirect("~/SessionEnd.aspx");
    }
}

このようにして、期限切れのセッションを1か所で処理できます。

于 2012-10-08T13:47:31.013 に答える