2017-08-08 12 views
0

セッション処理に関するいくつかの要件がありますが、問題を抱えています。Expressセッションで保存されたセッションのTTLリフレッシュを拒否する方法は?

セッションがする必要がある:ユーザーが

  • 非アクティブになっている場合

    1. は30分に期限切れは、ユーザーが最初にかかわらず、活動のログオンしてから8時間後に期限切れ。

    項目1は設定できましたが、項目2は設定できませんでした。ユーザーがアプリケーションをブラウズするたびに、Cookieは(時間+ 30分で)更新され、ブラウザに返されますが、 TTLもリフレッシュされます。最後の部分は私が止める必要があるものです。

    私はTTLリフレッシュがexpress-sessionの機能として実装されていると思います。 Session.touch()はミドルウェアから呼び出されますが、このアクションを削除する設定はありますか?

    スタック: ノード、express、express-session、connect-redis forセッションストレージ。

    設定:

    app.use(session({ 
        store: new RedisStore({ 
        client: redis_client, 
        ttl: 28800 // 8 hours 
        }), 
        secret: config.redis_session_secret, 
        resave: false, 
        saveUninitialized: false, 
        cookie: { 
        path: '/', 
        httpOnly: true, 
        secure: false, 
        maxAge: 30 * 60 * 1000 //mins * seconds * milliseconds. session cookie will expire every 30 mins 
        }, 
        rolling: true 
    })); 
    
  • 答えて

    0

    私はオプション2は、特急セッションのサポート機能ではないと思います。だから、セッションが開始された時間を示し、10分ごと(おそらくインターバルタイマー)にプロパティを追加し、そのプロパティが8時間より古いすべてのセッションを照会し、それらを削除することができますデータベース。

    代わりに、すべてのリクエストでセッションの有効期限をチェックし、セッションが8時間以上経過した場合にセッションを削除するミドルウェアを実装できます。

    この動作を実装すると、アプリケーションの使用中にユーザーがセッションを失う可能性があることに注意してください(これは通常このように実装されていません)。

    +0

    うん、私は同じと思った。私はちょうど明示的にそのことをやっている方法が既に実装されているかどうかを見たいと思っていました –

    関連する問題