質問: Coldfusionで複数のSessionTimeoutを使用する さまざまな種類のユーザーを持つアプリケーションがあります。ユーザータイプに基づいてsessionTimeoutを設定する必要があります。たとえば、admin 30分、user 10分などです。これを行うために、application.cfcでデフォルトのsessionTimeoutを30分にしました。 ``` ............. ............ ``` アプリケーション変数をダンプすると、sessionTimeoutが600で正しいことがわかります。 onRequestStartメソッドで、今度はLoggedInユーザタイプをチェックし、それに応じてsessionTimeoutを設定するコードを書きました。 ``` ``` この後、アプリケーション変数をダンプすると、sessionTimeoutが秒単位ではなく日単位で表示されます。また、セッションは10分後に終了していません。 誰かがこれを手伝ってくれる?アプリケーションに2つの異なるsessionTimeoutを実装する方法また、sessionTimeoutをもう一度設定した後、sessionTimeoutが秒単位ではなく日単位で表示されるのはなぜですか。
回答: これがあなたが使用できる一つの方法です。それはあなた自身のセッション管理クライアント側を作成するようなものですが、それはユーザロールごとのカスタムセッションタイムアウトを可能にします。 セッションスコープ内に、ユーザーがアプリにログオンした現在の時刻に初期設定されているタイムスタンプを作成します。アプリのクライアントJavaScriptで、関数を1分ごとに呼び出すタイマーを作成するか、サーバー側の関数を呼び出して、そのユーザーの最後に記録されたタイムスタンプから経過した時間を確認します。経過時間がそのユーザーの役割で許可されている最大時間に達した場合は、JavaScript関数を使用してユーザーをログアウトします。 この方法では、ユーザーがアプリと対話するたびに(スクリプトの実行、cfcライブラリ関数の呼び出しなど)、ユーザーがアプリをアクティブに使用している間にログアウトされないように、タイムスタンプをリセットします。ユーザーは、ユーザーが定義した "x"分の非アクティブ時間が経過した後にのみログアウトされます。また、サーバー側で呼び出す関数は、ユーザーロールごとのその数をさらに定義できます。