0

私は 0.8.21 nodejs と 3.1.0 Express Framework を持っています (モジュールは最新です)。Express、mongodb、およびパスポート認証を備えた有名なherokuプロジェクトがあります。

https://github.com/madhums/nodejs-express-mongoose-demo

セッション ストレージ:

  var express = require('express')
    , mongoStore = require('connect-mongo')(express)

  ...

  app.use(express.logger('dev'))

  // set views path, template engine and default layout
  app.set('views', config.root + '/app/views')
  app.set('view engine', 'jade')

  app.configure(function () {
    // dynamic helpers
    app.use(viewHelpers(config))

    // cookieParser should be above session
    app.use(express.cookieParser())

    // bodyParser should be above methodOverride
    app.use(express.bodyParser())
    app.use(express.methodOverride())

    // express/mongo session storage
    app.use(express.session({
      secret: 'noobjs',
      store: new mongoStore({
        url: config.db,
        collection : 'sessions'
      })
    }))

    // connect flash for flash messages
    app.use(flash())

    // use passport session
    app.use(passport.initialize())
    app.use(passport.session())

    app.use(express.favicon())

    // routes should be at the last
    app.use(app.router)

    ...

質問:ユーザーが 70 秒間だけログインできるようにしたいので、後で何が起こるかを書きcookie: {maxAge: 70*1000},ましapp.use(express.session({た。ユーザーがページを更新するか、リンクに移動した場合、セッションは次のようにデータベースに更新されます。

{ "_id" : "cVYWfv7kHbaEPNUCD2Bbbaw4",
  "session" : "{\"cookie\":{\"originalMaxAge\":70000,\"expires\":\"2013-03-02T14:46:52.146Z\",\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":\"51320f3fd04c162d14000003\"},\"flash\":{}}",
  "expires" : Date( 1362235612146 ) }

とにかく、ユーザーは 70 秒しかログオンしていません。つまり、セッションはmongodb、新しいexpires日付に更新されますが、ユーザーはログインしてから70秒しかログインできません。

お願い助けて。ありがとうございました。

4

1 に答える 1

1

connect-mongoは、セッションを削除するかどうかを1分間隔でチェックするセッションに対してTTLインデックスを維持していると思います。したがって、セッションの有効期限は1分、2分、またはk分(kは整数)のようになります。connect mongoの有効期限ロジックを使用している場合は、セッションを削除することはできません。

あなたにできること

  1. connect mongoが実行していることを無視して、カスタム有効期限のロジックを自分で作成します。(偽の方法)

  2. OR70秒後、ブラウザでCookieを削除するだけです。そうするjavascriptコードを書いてください。1つの欠点がありますが、それでもユーザーが自分の側でjavascriptを無効にして、Cookieを有効にし、最大120秒までセッションを続行できる可能性があります(expires70秒に設定されていると仮定します)。このような場合にこれらの50秒が危険にさらされる可能性がある場合は、この迅速でエレガントな修正を行うことができます。

于 2013-03-03T10:12:36.200 に答える