Vraag knooppuntuitdrukking, hoe u cookies kunt wissen na het uitloggen


In principe voer ik een omleiding van a.example.com naar www.example.com uit en ik verwacht dat ik cookies op www.example.com kan verwijderen (omdat cookie is gemaakt met .example.com als het cookiedomein), maar volgende code werkt niet.

Ik weet dat deze vraag een dubbele vraag lijkt, ik heb alles geprobeerd vanuit een vergelijkbare vraag, maar het werkt niet. Zie na de code wat ik al heb geprobeerd.

Expression 3.0.3 en knoop 0.10.32 gebruiken.

express sessie middleware

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

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

uitlogfunctie

function logout(req, res){
    ...

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

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

    });
}

Wat ik al heb geprobeerd met een soortgelijke vraag

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

Dus ik stop path : '/' in middleware voor express-sessies, zoals:

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

Geen succes.

  1. https://groups.google.com/forum/#!topic/express-js/PmgGMNOzhgM
    In plaats daarvan gebruikte res.clearCookie: res.cookie ('express.sid', '', {verloopt: nieuwe datum (1), pad: '/'});

Geen succes.


10
2017-08-20 09:36


oorsprong


antwoorden:


Dit is response.clearCookie of Express.JS (bestand response.js op regel 749).

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

Als u een onderbrekingspunt op deze regel instelt, ziet u dat verlopen wordt gerapporteerd op een ongeldige datum. Dus in plaats van response.clearCookie te gebruiken, zorg ervoor dat het onmiddellijk verloopt zoals dit.

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

8
2017-12-08 08:18



Dit werkt voor mij met cookie-parser module:

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('/');
});

2
2017-12-14 15:36