フォーム認証を使用する asp.net mvc 4 アプリケーションがあります。
ログインした人がこの期間 (ログインしてからの時間ではなく) アクティブでない場合、サイトの 30 分の時間制限を設定したいと考えています。現在、Cookie を保持しており、セッション状態がありません。
これを達成するための最良の方法は何ですか?
フォーム認証を使用する asp.net mvc 4 アプリケーションがあります。
ログインした人がこの期間 (ログインしてからの時間ではなく) アクティブでない場合、サイトの 30 分の時間制限を設定したいと考えています。現在、Cookie を保持しており、セッション状態がありません。
これを達成するための最良の方法は何ですか?
Cookie と混同する理由 タイムアウトを設定するだけでうまくいくはずです
以下のようなもの。
<authentication mode="Forms">
<forms loginUrl="~/Test/LogOn" timeout="30" defaultUrl="~/Test/Index" />
</authentication>
私が提案する解決策は、FormsAuth の「slidingExpiration」プロパティを利用することです。
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="20" slidingExpiration="true"/>
</authentication>
また、永続的な Cookie を作成するには、Login() で次のようにします。
FormsAuthentication.SetAuthCookie(model.UserName, true);
このようにして、20 分間の非アクティブのスライディング ウィンドウが作成されます。つまり、ユーザーが行う各アクションは、有効期限ウィンドウをさらに 20 分間進めます。したがって、実際に 20 分間アクティブでない場合、Cookie は期限切れになります。