Как добавить время истечения в часах для куки в Angular 2?

Как добавить время истечения в часах для куки, я могу делать с днями.

Cookie.set('SESSION_TOKEN', sessionToken, 6); // here 6 is days

Я хочу в часах. Я хочу, чтобы срок действия файлов cookie истек через 6 часов.

Cookie.set('SESSION_TOKEN', sessionToken, 6(hours)); // 6 hours

Ниже приведен код, который я использую, но я получаю сообщение об ошибке "Аргумент типа" Дата "не может быть назначен параметру типа" число ""

setCookie(userObject) {
    let expire = new Date();
    var time = Date.now() + ((3600 * 1000) * 6);
    expire.setTime(time);
    console.log("expire "+expire);
    Cookie.set('USER_NAME',Base64.encode(userObject.user.email),expire);
    Cookie.set('SESSION_TOKEN',userObject.sessionToken,expire);
}

2 ответа

Решение

Я сделал так, это сработало для меня.

 Cookie.set('SESSION_TOKEN',userObject.sessionToken,0.25);

На самом деле, если мы даем 1 оно длится 24 часа, поэтому я применил к нему математическую логику, то есть 6 часов.

1 day -> 24 hrs
? day -> 6 hrs
(1*6)/24 -> 0.25 i.e. 6hrs

Вы также можете сделать что-то вроде ниже и установить его в часах для меньшей сложности:

const now = new Date();
now.setHours(now.getHours() + 8);
Cookie.set('SESSION_TOKEN', sessionToken, now);

Затем вы можете легко установить желаемое время истечения срока в часах, изменив число в setHours:)

Насколько я знаю, текущая версия ng2-cookies не содержит такой функции, которая позволила бы вам определять часы вместо дней. Поэтому вы должны вручную рассчитать время истечения срока действия куки.

NG2-печенье / SRC / cookie.ts

/**
 * Save the Cookie
 *
 * @param  {string} name Cookie's identification
 * @param  {string} value Cookie's value
 * @param  {number} expires Cookie's expiration date in days from now or at a specific date from a Date object. If it's undefined the cookie is a session Cookie
 * @param  {string} path Path relative to the domain where the cookie should be avaiable. Default /
 * @param  {string} domain Domain where the cookie should be avaiable. Default current domain
 * @param  {boolean} secure If true, the cookie will only be available through a secured connection
 */
public static set(name: string, value: string, expires?: number | Date, path?: string, domain?: string, secure?: boolean) {

Так что я думаю, что-то подобное может сработать.

import { Cookie } from 'ng2-cookies';

var expire = new Date();
var time = Date.now() + ((3600 * 1000) * 6); // current time + 6 hours ///
expire.setTime(time);

Cookie.set("test", "", expire);
Другие вопросы по тегам