7

セッションを削除するためにサーバーに Ajax 呼び出しを送信するバックボーン ビューがあります。

サーバーで次のイベントがトリガーされます。

app.delete('/session', function(req, res) {
    if (req.session) {
        req.session.destroy(function() {
            res.clearCookie('connect.sid', { path: '/' });
            res.send('removed session', 200);
        });
    } else {
        res.send('no session assigned', 500);
    }
});

これについての奇妙な点は、HTTP 500 エラー コードを取得せずにログアウト ボタンを複数回押すことができることです。また、クロムは、クッキーがまだ存在することを示しています。

何がうまくいかないのですか?

よろしく

編集

これは直接セッションの問題ではなく、Cookie の問題であることがわかりました。ルートに res.clearCookie を追加しました。残念ながら、動作 (Cookie、セッション キープ アライブ) は変わりませんでした

EDIT2 : res.clearCookieにいくつかのパラメーターを指定しました => res.clearCookie('connect.sid', { path: '/' }); これで、少なくとも cookie はブラウザから削除されました。しかし、セッションはまだ利用できるようです。または、少なくとも req.session が false であっても、必要な頻度でログアウトルートを呼び出すことができます

EDIT3: redis からすべてのセッションを削除し、すべて (redis、ノード、ブラウザー) を再起動しました。再度ログインしてログアウトしました。これは今のところ機能しますが、F5 でページを再読み込みすると、新しいセッションが開始されます。なぜ?

4

1 に答える 1