web-dev-qa-db-ja.com

ノードエクスプレス、ログアウト後にクッキーをクリアする方法

基本的に私はa.example.comからwww.example.comへのリダイレクトを行っており、www.example.comのCookieを削除できると期待しています(Cookieは.example.comをCookieドメインとして作成されているため)。次のコードは機能しません。

私はこの質問が重複した質問のように見えることを知っています。同様の質問からすべてを試しましたが、うまくいきません。コードの後に​​私がすでに試したことを見てください

Express 3.0.3およびノー​​ド0.10.32を使用します。

エクスプレスセッションミドルウェア

...
var cookiedata = { 
    domain              : '.example.com',
    originalMaxAge      : null,
    httpOnly            : false
};

app.use(express.session({
        store  : ..., 
        secret : ..., 
        key    : 'express.sid', 
        cookie : cookiedata 
}));
...

ログアウト機能

function logout(req, res){
    ...

    req.session.destroy(function(){
        req.session = null;

        res.clearCookie('express.sid', { path: '/' });
        res.redirect('https://www.example.com');

    });
}

同様の質問からすでに試したこと

  1. https://github.com/strongloop/express/issues/691

だから私はpath : '/'次のような高速セッションミドルウェア:

app.use(express.session({ ..., path : '/' });

失敗。

  1. https://groups.google.com/forum/#!topic/express-js/PmgGMNOzhgM
    代わりにres.clearCookieを使用:res.cookie( 'express.sid'、 ''、{expires:new Date(1)、path: '/'});

失敗。

12
Srle

これはExpress.JSのresponse.clearCookieです(749行目のresponse.jsファイル)。

var opts = merge({ expires: new Date(1), path: '/' }, options);
return this.cookie(name, '', opts);

この行にブレークポイントを設定すると、有効期限が無効な日付で報告されます。したがって、response.clearCookieを使用する代わりに、このようにすぐに期限切れにするだけです。

response.cookie("express.sid", "", { expires: new Date() });
10
Tien Do

これはcookie-parserモジュールで私のために働いています:

router.get('/logout', function(req, res){
    cookie = req.cookies;
    for (var prop in cookie) {
        if (!cookie.hasOwnProperty(prop)) {
            continue;
        }    
        res.cookie(prop, '', {expires: new Date(0)});
    }
    res.redirect('/');
});
3
Sandro Wiggers