2017-05-08 17 views
0

セッションを終了する方法を探しています。ここに私の計画があります 私はRSA公開鍵/秘密鍵を生成したいのですが、ユーザが私のウェブサイトにアクセスしたときにセッションに依存します。彼らが私のウェブサイトにたどり着くと公開鍵を送ります。ログインしようとすると公開鍵を使って自分のID/PWを暗号化し、サーバは秘密鍵でそれを復号します。ユーザーのログイン後にすべてのセッションを期限切れにするか、サーバーのメモリを節約するためにWebサイトから退出する必要があります。そこで私はどのセッションにもタイムアウトを設定することにしました。ログインするかどうかに関係なく、すべてのセッションはこの方法で削除されます。express-sessionで期限切れになっても動作しません

そして、私は特定の時間の後にセッションを削除するために 'expires'属性を使用することができますが、動作しないことがわかりました。

これは私が1秒以上待ってから/ logincheckを送って、ログインしますが、私は「on」になった私のコード

var RedisStore = require('connect-redis')(session); 
var redis = require("redis").createClient(); 
app.use(session({ 
    store: new RedisStore({host: 'localhost', port:6379, client:redis, 
resave:false}), 
    secret: 'keyboard cat', 
    expires : '1000' 
})); 


app.get('/logincheck', function(req, res){ 

    console.log('session check : ' + req.session.redSession); 
    if(req.session.redSession){ 
    res.json({ 
     result : 'on' 
    }); 
    } 
    else { 
    res.json({ 
     result : 'off' 
    }); 
    } 
}); 


app.post('/login', function(req, res) { 
req.session.redSession = req.body.id; 
console.log('session check : ' + req.session.redSession); 

if (req.body.id == 'fuck' && req.body.password == 'you') { 
    res.json({ 
     message: 'ㅊㅋ' 
    }); 
    //sess.id = req.body.id; 
    return; 
} else { 
    res.json({ 
     message: 'fuck you' 
    }); 
    return; 
} 
}); 

です。私が期待していたように、セッションは1秒で期限切れになるはずです。それ自体が破棄されるので、req.session.redSessionに何もすべきではありません。しかし、それは戻り値を 'on'に保持し、console.log( 'session check:')は文字列(未定義)をサーバー側に返します。

私は間違っていると思いますか? 1秒後にセッションを消すにはどうすればよいですか?

答えて

0

expirescookieオプション(ない「ダイレクト」オプション)の財産であり、あなたの代わりにexpiresmaxAgeを使用する必要があります。

app.use(session({ 
    store : new RedisStore({host: 'localhost', port:6379, client:redis, 
resave:false}), 
    secret : 'keyboard cat', 
    cookie : { 
     maxAge : 1000 
    } 
})); 

設定によって、あなたもする他のオプションが必要な場合がありますセット(だからconsult the manual)。

+0

あなたが書いたとおりに自分のコードを編集しましたが、クッキーには有効期限がありますが、同じ問題が残っています – HyeonWoo

+0

セッションは有効期限切れではありません – HyeonWoo

+0

前のすべてのCookieがブラウザから削除されていることを確認してください。 – robertklep

関連する問題