私は、ウェブサイトのセッションタイムアウトについて見ているコードを持っています。 web.configで、このコードに出会いました。
<authentication mode="Forms">
<forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>
<sessionState timeout="30" />
誰かが一方が他方を先取りするかどうか、そしてそれらがどのように異なるかを知っていますか。ありがとう。
それらは異なるものです。フォーム認証タイムアウト値は、認証Cookieが有効になるように設定される時間を分単位で設定します。つまり、value
分数が経過すると、Cookieは期限切れになり、ユーザーは認証されなくなります。ログインページが自動的に。 slidingExpiration=true
の値は、基本的に、リクエストが行われるたびにタイマーがリセットされ、ユーザーがタイムアウト値内でリクエストを行う限り、認証が継続されることを示しています。 slidingExpiration=false
を設定すると、ユーザーがタイムアウト値内でリクエストを行ったかどうかに関係なく、value
分後に認証Cookieの有効期限が切れます。
SessionState
タイムアウト値は、セッション状態プロバイダーが特定のセッションのメモリ(または使用されているバッキングストア、SQL Server、OutOfProcなど)にデータを保持するのに必要な時間を設定します。たとえば、例の値を使用してSessionにオブジェクトを配置すると、このデータは30分後に削除されます。ユーザーはまだ認証されている可能性がありますが、セッション内のデータは存在しない可能性があります。 Session Timeout
値は、リクエストごとに常にリセットされます。
SlideExpiration = trueの値は、基本的に、リクエストが行われるたびにタイマーがリセットされ、ユーザーがタイムアウト値内でリクエストを行う限り、認証され続けることを示しています。
これは正しくありません。認証Cookieのタイムアウトは、タイムアウトの半分の時間が経過した場合にのみリセットされます。
たとえば https://support.Microsoft.com/de-ch/kb/910439/en-us または https://itworksonmymachine.wordpress.com/2008/07/ 17/forms-authentication-timeout-vs-session-timeout /
私が理解していることから、それらは互いに独立しています。セッションタイムアウトを認証タイムアウト以下に保つことにより、認証がタイムアウトになった後、ユーザー固有のセッション変数が保持されないようにすることができます(それが懸念される場合、これを尋ねるときの通常の問題だと思います)質問)。もちろん、ログアウト時にセッション変数の破棄を手動で処理する必要があります。
以下は、あなたの質問に答えるか、少なくともあなたを正しい方向に向けるまともな回答です:
違いは、1つ(フォームタイムアウト)はユーザーの認証に関係し、もう1つ(セッションタイムアウト)はキャッシュされたデータがサーバーに保存される期間に関係することです。したがって、それらは非常に独立したものであるため、一方が他方より優先されることはありません。
<sessionState timeout="2" />
<authentication mode="Forms">
<forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/>
</authentication>
この構成では、2分ごとにログインページに移動しますが、以前の回答を議論するようです。
この質問に出くわした人は、MSのこのドキュメントを参照してください-FormsAuthentication Timeout設定に関する非常に良い詳細があります。
このドキュメントでは、bmodeがAccepted Answerで行っているコメント-永続的なCookie(セッションと有効期限)について詳しく説明しています。