web-dev-qa-db-ja.com

フォームの認証タイムアウトとセッションタイムアウトの違い

セッション状態のタイムアウトは、このweb.config要素を使用して設定されます

<sessionState mode="InProc" cookieless="false" timeout="120" />

フォーム認証は、このweb.config要素を使用して構成されます

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="Login.aspx"
           protection="All"
           timeout="30"
           name=".ASPXAUTH" 
           path="/"
           requireSSL="false"
           slidingExpiration="true"
           defaultUrl="default.aspx"
           cookieless="UseDeviceProfile"
           enableCrossAppRedirects="false" />
  </authentication>
</system.web>

これらの各要素で指定されているタイムアウトの違いは何ですか?両方が異なる場合、どのように機能しますか?

26
Nick

匿名であるかどうかに関係なく、新しいユーザーがWebサイトにアクセスするたびにセッションが開始されます。認証はセッションとはほとんど関係がありません。

認証タイムアウトは、ユーザーのブラウザで認証Cookieが有効である時間です。 Cookieの有効期限が切れると、サイト上の保護されたリソースにアクセスするために再認証する必要があります。

したがって、認証Cookieの前にセッションがタイムアウトした場合、それらは認証されたままですが、すべてのセッション変数が消え、セッションの欠落によって引き起こされるnullやその他の条件をチェックする訓練を受けていない場合、Webサイトでエラーが発生する可能性があります。

セッションの前に認証がタイムアウトした場合、すべてのセッション変数は引き続き存在しますが、再度ログインするまで保護されたリソースにアクセスできません。

58
womp

予想通り。

例えばセッションが20分後にタイムアウトすると、セッション変数は失われます。ただし、ユーザーは認証によって保護されているページにアクセスできます。

認証がタイムアウトした場合、ユーザーは保護されているページにアクセスできず、セッションの状態は関係ありません。

1
karlis