Уничтожить cookie NodeJs

Вероятно, вы можете использовать AOP для создания своего рода Aspect, который кэшировал результаты наших геттеров для настраиваемого количества времени. Это может помешать вам копировать и вставлять код шаблона в десятки аксессуаров.

29
задан Hongarc 27 October 2018 в 16:40
поделиться

6 ответов

Нет способа удалить куки в соответствии со спецификацией HTTP. Чтобы эффективно «удалить» куки-файл, вы устанавливаете дату истечения срока действия на некоторую дату в прошлом. По сути, это может привести к следующему (согласно документации модуля cookie):

cookies.set('testtoken', {maxAge: Date.now()});

Или согласно спецификации HTTP:

cookies.set('testtoken', {expires: Date.now()});

Оба из них должны работать. Вы можете заменить Date.now() на new Date(0) для действительно старой даты.

17
ответ дан Roel van Uden 27 October 2018 в 16:40
поделиться

Для веб-приложения вы можете просто установить cookie в ответе:

res.cookie("key", value);

и удалить cookie:

res.clearCookie("key");
71
ответ дан vashishatashu 27 October 2018 в 16:40
поделиться

Чтобы удалить любой файл cookie http, если мы просто попытаемся удалить его из ответа [используя res.clearCookie("key")], он определенно не будет работать. В действительности, чтобы удалить http cookie, домен и путь очень важны.

Домен и путь определяют область действия cookie. По сути, они, по сути, говорят браузеру, к какому веб-сайту принадлежит cookie. Отправка того же значения cookie с помощью; добавление expires также является плохой идеей, поскольку вы хотите, чтобы содержимое было уничтожено, но этого не произойдет.

Лучшей идеей будет сделать файл cookie недействительным, установив пустое значение и включив поле expires, как показано ниже:

res.cookie("key","empty the key content", {expires:old date, domain:'.example.com', path:'/'});

res.cookie("token", "", { expires: new Date(0),domain:'.test.com', path: '/' });

Надеюсь, это поможет !!!

7
ответ дан Sunil Garg 27 October 2018 в 16:40
поделиться

Я использую это с модулем 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('/');
});
6
ответ дан Sandro Wiggers 27 October 2018 в 16:40
поделиться

Хотя еще один ответ правильный, удаление файла cookie из веб-приложения express.js выполняется путем вызова следующего метода:

res.clearCookie("key");

Но есть предостережение!

Ваши параметры cookie (за исключением срока действия) должны быть такими же, как и при его установке. В противном случае браузеры НЕ удалят куки. Поэтому используйте тот же домен, настройки безопасности и т. Д. (Ссылка: https://expressjs.com/en/4x/api.html#res.clearCookie )

6
ответ дан Jesper Bylund 27 October 2018 в 16:40
поделиться

Я также использую cookie-parser, и верхние ответы приводят меня к решению. В моем случае мне нужно было также добавить overwrite: true, в противном случае был добавлен новый ключ cookie.

Итак, мое окончательное решение выглядит так:

res.cookie('cookieName', '', {
      domain: 'https://my.domain.com',
      maxAge: 0,
      overwrite: true,
    });
0
ответ дан Gašper Gračner 27 October 2018 в 16:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: