如何设置在AngularJS cookie的有效期(How to set expiration da

2019-06-18 08:22发布

  1. 我们要存储在cookie的用户授权信息不应在刷新(F5)浏览器的丢失。

  2. 我们要存储的授权信息中的“永久的cookie”的情况下,用户选择了在日志上的时间“记住我”复选框。

Answer 1:

这是可能的1.4.0版本的角度使用ngCookies模块:

https://docs.angularjs.org/api/ngCookies/service/$cookies

angular.module('cookiesExample', ['ngCookies'])
.controller('ExampleController', ['$cookies', function($cookies) {
  // Find tomorrow's date.
  var expireDate = new Date();
  expireDate.setDate(expireDate.getDate() + 1);
  // Setting a cookie
  $cookies.put('myFavorite', 'oatmeal', {'expires': expireDate});
}]);


Answer 2:

对于1.4:正如评论这里要注意和其他人以下,为1.4,角的原生支持cookie现在提供了编辑Cookie的功能:

由于38fbe3ee,$饼干将不再公开表示目前的浏览器cookie值的属性。 $饼干不再轮询改变饼干的浏览器不会再复制cookie值到$饼干对象。

这是改变,因为投票是昂贵并造成问题与$饼干性能与实际的浏览器cookie的值(最初加入的投票理由正确同步是让不同的选项卡之间的通信,但有更好的方法今天这个做,例如localStorage的。)

在$饼干新的API如下:

得到把的getObject putObject GETALL删除您必须显式地才能访问cookie数据使用上面的方法。 这也意味着你不能再收看$饼干性能来检测浏览器的cookie所发生的变化。

一般只需要这个功能,如果第三方库以编程方式在运行时更改的cookie。 如果你靠这个,然后您必须编写的代码可以在第三方库进行更改cookie的反应或实现自己的轮询机制。

实际的实现是通过做$ cookiesProvider对象,它可以通过传递put电话。

对于1.3及以下:对于那些谁做你最好的,以避免加载jQuery插件,这似乎是一个不错的替代品角- https://github.com/ivpusic/angular-cookie



Answer 3:

在角V1.4你终于可以设置饼干一些选项,如到期。 这里是一个非常简单的例子:

var now = new Date(),
    // this will set the expiration to 12 months
    exp = new Date(now.getFullYear()+1, now.getMonth(), now.getDate());

$cookies.put('someToken','blabla',{
  expires: exp
});

var cookie = $cookies.get('someToken');
console.log(cookie); // logs 'blabla'

如果您运行此代码后检查的cookies,您将看到期满将被正确设置为名为cookie的someToken

作为第三PARAM到传递的对象put上述功能允许其他选项,以及,如设置pathdomainsecure 。 检查的文档的概述。

PS -作为一个方面说明,如果你正在升级记住, $cookieStore已被弃用,因此$cookies ,现在是处理饼干的唯一方法。 看到文档



Answer 4:

我想提出一个额外的例子如一些人知道饼干一生的额外时间。 即。 他们想创建一个cookie持续10多分钟,或1天以上。

通常你已经知道的cookie将持续多久,以秒。

    var today = new Date();
    var expiresValue = new Date(today);

    //Set 'expires' option in 1 minute
    expiresValue.setMinutes(today.getMinutes() + 1); 

    //Set 'expires' option in 2 hours
    expiresValue.setMinutes(today.getMinutes() + 120); 


    //Set 'expires' option in (60 x 60) seconds = 1 hour
    expiresValue.setSeconds(today.getSeconds() + 3600); 

    //Set 'expires' option in (12 x 60 x 60) = 43200 seconds = 12 hours
    expiresValue.setSeconds(today.getSeconds() + 43200); 

    $cookies.putObject('myCookiesName', 'myCookiesValue',  {'expires' : expiresValue});

你可以找回像往常一样:

    var myCookiesValue = $cookies.getObject('myCookiesName');

如果为空,则返回undefined。

链接;

http://www.w3schools.com/jsref/jsref_obj_date.asp
https://docs.angularjs.org/api/ngCookies/provider/ $ cookiesProvider#默认



Answer 5:

你可以去angular.js脚本和改变插入的cookie
搜索self.cookies = function(name, value) {则u可以改变,增加了该cookie例如7天的代码

 if (value === undefined) {
    rawDocument.cookie = escape(name) + "=;path=" + cookiePath +
                            ";expires=Thu, 01 Jan 1970 00:00:00 GMT";
  } else {
    if (isString(value)) {
        var now = new Date();
        var time = now.getTime();
        time += 24*60*60*1000*7;
        now.setTime(time);
         cookieLength = (rawDocument.cookie = escape(name) + '=' + escape(value) +
                 ';path=' + cookiePath+";expires="+now.toGMTString()).length + 1


Answer 6:

我知道,这个问题是有点老了,已经有一个公认的答案。

不过还是我“A目前的问题米,(没有关于jQuery的或纯JavaScript)挣扎。

于是,经过一番研究,我发现这一点: https://github.com/ivpusic/angular-cookie

它提供了一个“接口”神似$的CookieStore。 并允许配置的到期日期(值和单位)。

关于在到期日以$饼干或$的CookieStore角的原生支持,“他们”对1.4这个问题的承诺更新,看看这个: https://github.com/angular/angular.js/pull/10530

这将有可能设置有效期限与$ cookieStore.put(...),至少他们建议...

编辑:我遇到了一个“问题”你不能混用角饼干模块化$饼干。 所以,如果你设置一个cookie与ipCookie(...)与检索ipCookie(...)因为$的cookie将返回undefined



Answer 7:

作为@文森特- briglia 指出 ,有一个jQuery下降,在直到可以用来作为一种变通$cookie服务变得配置- 检查出来这里



Answer 8:

您可以使用https://github.com/ivpusic/angular-cookie

首先,你需要注入ipCookie到您的角度模块。

var myApp = angular.module('myApp', ['ipCookie']);

而现在,例如,如果你想从你的控制器使用

myApp.controller('cookieController', ['$scope', 'ipCookie', function($scope, ipCookie) {
  // your code here
}]);

要创建一个cookie的使用

ipCookie(key, value);

值支持字符串,数字,布尔值,数组和对象,并且将被自动序列化为该cookie。

您还可以设置一些额外的选项,比如天数时,cookie过期

ipCookie(key, value, { expires: 21 });


文章来源: How to set expiration date for cookie in AngularJS