1

asp.netフォーム認証チケットの有効期限が切れたことを検出したい。次に、非アクティブのためにサインアウトしたユーザーをサーバーにログインさせたいと思います。認証チケットの有効期限が切れたときにサーバーで発生するイベントはありますか?

<sessionState mode="InProc" timeout="5"></sessionState>
<authentication mode="Forms">
  <forms loginUrl="~/Home/AccessDenied" timeout="5" />
</authentication>

グローバルasaxファイルで、Session_OnEnd()を試しました。ただし、context.userオブジェクトはnullです。membership.getuser()を呼び出すと、nullも返します。認証の前にセッションタイムアウトを作成しようとしましたが、それは役に立ちません。私はmvc3とii7.5を使用しています。

4

1 に答える 1

3

セッション認証とフォーム認証には、2つの完全に別個のタイムアウトがあります。ここでこれに関する私の投稿を参照してください:

ASP.NETでフォーム認証タイムアウト例外を処理するにはどうすればよいですか?

Application_PreRequestHandlerExecuteで、チケットを確認する必要があります。

また、そこに投稿したコードを使用して、セッションとフォームの認証タイムアウトが同期していることを確認してください。両方を60分と言うだけではありません。フォーム認証は、時間の半分が経過するまで「タッチされた」時間を更新せず、セッション時間はリクエストごとに更新されるため、同期がとれなくなります。

于 2011-10-17T17:42:37.560 に答える