2

私のアプリケーションでは、フォーム認証とセッションを使用しています。ユーザーが 6 時間後にログアウトされるようにするにはどうすればよいですか?

私の web.config で、セッションのタイムアウトを 360 分に設定しました。しかし、非アクティブ状態が 10 分間続くと、再度ログインする必要があります。

また、フォーム認証のタイムアウトを 360 分に設定しました。私が間違っているのは何ですか?

4

6 に答える 6

4

セッションのタイムアウトに影響するタイムアウト値は他にもいくつかあります。私の頭に浮かぶのは、ワーカー プロセス タイムアウト (IIS から設定される) です。ワーカー プロセスのデフォルトのタイムアウトは 20 分であるため、InProc モードでセッションを使用している場合、サイトで 20 分間アクティビティがない場合、ワーカー プロセスが終了し、セッションが終了します。そのため、ワーカー プロセスのタイムアウト値を 360 分にすることも必要になる場合があります。

于 2010-01-07T09:40:45.537 に答える
3

この設定を試してください:

<authentication mode="Forms"> <forms timeout="360" slideExpiration="true"/> </authentication>

また、いくつかの点を確認してください。

  • FormsAuthenticationTicket がより低い Cookie タイムアウト値で作成された場合、オーバーライドされる可能性があります

  • アプリケーションプールの「ワーカープロセスのシャットダウン」間隔が短い場合、状態が以前にリセットされます

于 2010-01-07T09:42:58.500 に答える
1

セッション タイムアウトを設定する代わりに、セッションを維持するメカニズムを実装できます。たとえば、ページを更新したり、ajax 呼び出しを行ったりすることができます。

チェックできる最大ログイン時間を実装することで、これに追加できます。

于 2010-01-07T09:41:10.967 に答える
1

timeoutslideExpirationを調整する必要があります:

<authentication mode="Forms">
    <forms requireSSL="false"
        defaultUrl="Default.aspx"
        loginUrl="Login.aspx"
        path="/"
        slidingExpiration="false"
        timeout="360"
        name=".ASPXFORMSAUTH">
    </forms>
</authentication>
于 2010-01-07T10:00:28.830 に答える
0

InProcセッションを使用していますか?(これはASP.net AFAIKのデフォルトです)その場合、アプリケーションプールがリサイクルされるかどうかを確認してください。これにより、すべてのセッションが強制終了されます。確認するIISはありませんが、アプリケーションプールが一定時間アイドル状態の場合、アプリケーションプールをシャットダウンするように構成されていると思います。これが開発サーバーの場合は、アイドル状態が長すぎてAppPoolがリサイクルされない可能性があります。そしてあなたのInProcセッションは殺されますか?

inprocの代わりにstateserverまたはsqlserverをすばやく実装するのがどれほど簡単かはわかりませんが、ここにSessionStateに関するMSDNページがあります。

于 2010-01-07T10:08:23.500 に答える