1. ホーム
  2. asp.net

[解決済み] フォーム認証のタイムアウトとsessionStateのタイムアウトの比較

2022-04-26 18:31:14

質問

ウェブサイトのセッションタイムアウトについて調べているコードがあります。web.configの中で、このコードを見つけました。

 <authentication mode="Forms">
  <forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>

<sessionState timeout="30" />

どちらかが優先されるのか、どう違うのか、ご存知の方いらっしゃいますか?ありがとうございます。

解決方法は?

この2つは異なるものです。その フォーム認証のタイムアウト の値は、認証クッキーが有効であるとされる時間を分単位で設定します。 value 分経過すると、クッキーは期限切れとなり、ユーザーは認証されなくなります - 自動的にログインページにリダイレクトされます。この場合 slidingExpiration=true の値は、基本的に、ユーザーがタイムアウト値内にリクエストを行う限り、認証が継続されることを意味しています (詳細については ここで ). もし slidingExpiration=false の後、認証クッキーは期限切れとなります。 value タイムアウト値内にユーザーがリクエストを行うかどうかにかかわらず、何分かかるかわからない。

SessionState タイムアウト は、Session Stateプロバイダが特定のセッションのデータをメモリ(またはSQL ServerやOutOfProcなど、使用されている任意のバッキングストア)に保持するために必要な時間を分単位で設定します。例えば、例の値を使用してSessionにオブジェクトを配置した場合、このデータは30分後に削除されます。ユーザーはまだ認証されているかもしれませんが、Session内のデータはもう存在しないかもしれません。そのため Session Timeout の値は、提案されているように、常にリクエストごとにリセットされます。 ここで こちら (クッキーを必要とする場合があります。それに対してクッキーなし)