6

私の構成:

app.configure(function(){
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.session({
        secret: 'MY SECRET',
        store: new MongoStore({
            db: 'MY SESSION DB',
            host: 'localhost',
            port:88888
        })
    }));
    app.use(everyauth.middleware());
    app.use(express.methodOverride());

    app.use(app.router);
});

app.configure('dev', function(){
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    appPort = config.port; //Setting PORT to 8888 in dev mode.
    app.use('/public', express.static(__dirname + '/public'));
});

app.configure('production', function(){
    app.use(express.errorHandler());
    appPort = config.port;
    //Set cache-header-expires to 1 day
    var oneDay = 86400000;
    //app.use('/public', express.static(__dirname + '/public'));
    app.use('/public',express.static(__dirname + '/public', { maxAge: oneDay }));
});

これで、アプリの /logout に移動する「ログアウト」リンクが作成されました。

私の知る限り、エクスプレスはログアウト時にセッションを自動的にクリアします。しかし、私の設定では、そうしているとは思いません。たとえば、セッションにアタッチされたカスタム変数

req.session.custom

ログアウト後も保持されます。でも、

req.session.auth

ログアウト後にクリアされます。

MongoDb ストア内のセッション オブジェクトの数は、時間の経過とともに増加するだけです。私もeveryauthを使用しています。

私は何が欠けているか、間違っていますか?

4

2 に答える 2

15

ログアウト時にユーザーのセッションを完全にクリアしたい場合は、関数req.session.destroy()から呼び出すことができますeveryauth.everymodule.handleLogoutreq.session.authを呼び出したときにのみクリアされますreq.logout()

于 2012-06-30T12:56:52.907 に答える