如何在Angular 2中为cookie添加到期时间?

时间:2017-02-02 09:09:57

标签: angular cookies angular2-cookie

如何为cookie添加以小时为单位的到期时间,我可以使用几天。

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

我想要几个小时。我希望cookie能在6小时内过期。

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

以下是我正在使用的代码,但是我收到错误“类型'日期'的参数不能分配给'number'类型的参数

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);
}

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

据我所知,当前版本的ng2-cookies不包含允许您定义小时而非天数的功能。因此,您必须手动计算cookie过期的时间。

ng2-cookies/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);

答案 2 :(得分:0)

您还可以执行以下操作,并以小时为单位进行设置,以降低复杂性:

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

然后,您可以通过更改setHours中的数字来轻松设置以小时为单位的首选到期时间:)