我们希望将用户的授权信息存储在Cookie中,在浏览器刷新(F5)时不会丢失。如何在AngularJS中设置cookie的到期日期
如果用户在登录时选择了“记住我”复选框,我们希望将授权信息存储在“永久cookie”中。
回答
正如@文森特 - briglia pointed out,有一个jQuery下降,在直到$cookie
服务变得配置可作为一种变通方法 - check it out here
为1.4: 正如评论指出这里和其他人以下,为1.4,角的原生支持cookie现在提供了编辑Cookie的功能:
由于38fbe3ee,$饼干将不再公开该 表示当前浏览器cooki性质e值。 $ cookie不再调查 浏览器对cookie的更改,不再将cookie的值 复制到$ cookies对象上。
这是改变,因为投票是昂贵的,造成的问题 与$饼干性能不符合 实际浏览器cookie值正确同步(原因轮询原是 添加是允许不同的选项卡之间的通信,但有。是 更好的方法来做到这一点今天,例如localStorage的)
新的API上$饼干如下:
得到放的getObject putObject GETALL删除您必须显式地使用 以上方法,以获取鸪鸪声kie数据。这也意味着您 不能再观看$ cookie上的属性来检测浏览器cookie上发生的 更改。
此功能通常只需要第三方库 在运行时以编程方式更改cookie。如果您依赖此 那么您必须编写能够对第三方库作出反应的代码,以便对cookie进行更改或实施您自己的轮询 机制。
实际执行是通过$cookiesProvider对象完成的,该对象可以通过put
调用传递。
1.3及以下: 对于那些你们谁做你最好的,以避免加载jQuery插件,这似乎是一个不错的替代品角 - https://github.com/ivpusic/angular-cookie
使用Angular 1.3或更低版本的最佳解决方案。如果'{'expires':expireDate});'或..............................,则文档中不太清楚 – vegemite4me
你可以去angular.js脚本和改变插入的cookie
搜索self.cookies = function(name, value) {
然后ü可以改变,增加了例如饼干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
我知道这个问题是有点老了,已经有一个公认的代码回答。
但仍然是一个现在的问题,我正在努力(不涉及jQuery或纯Javascript)。
于是,经过一番研究,我发现这一点: https://github.com/ivpusic/angular-cookie
它提供了一个“接口”神似$的CookieStore。并允许配置到期日期(值和单位)。
关于在到期日以$饼干或$的CookieStore角的原生支持,“他们”对1.4这个问题的承诺更新,看看这个:https://github.com/angular/angular.js/pull/10530
将有可能设置有效期限与$的CookieStore .put(...),至少他们提出...
编辑:我遇到了一个“问题”,你不能混合$ cookie与角-cookie模块。因此,如果您使用ipCookie(...)
设置cookie,则可以用ipCookie(...)
检索它,因为使用$ cookie它将返回undefined
。
在Angular v1.4中,您可以终于为设置了一些cookies选项,例如到期。这里是一个非常简单的例子:
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'
如果您运行此代码,你会看到,过期将被正确设置为名为someToken
饼干后检查您的Cookie。上述
作为第三PARAM到put
功能传递的对象允许其他选项,以及,诸如设置path
,domain
和secure
。查看the docs以获得总览。
PS - 作为一个侧面说明,如果你正在升级记住,$cookieStore
已被弃用,因此现在$cookies
是对付饼干的唯一方法。看到docs
这可能是在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});
}]);
........................'[{'expires':expireDate}]);'应该使用格式... – Serge
我想提出一个额外的例子如一些人知道的额外时间cookies的一生。即。他们希望将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#默认
'today'来自? –
我试图让代码更好,并忘记将所有'现在改为今天。现在应该没问题。 –
您可以使用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中。 //people.opera:
你也可以当一个cookie过期
ipCookie(key, value, { expires: 21 });
- 1. 如何在cfscript中设置cookie的到期日期
- 2. Cookie设置日期过期
- 3. 无法设置cookie到期日期
- 4. 如何设置ASP.NET_SessionId cookie的到期日期?
- 5. 如何设置客户端cookie的到期日期?
- 6. 的cookie设置过期日期
- 7. 设置Cookie时的过期日期
- 8. 无法使用javascript在Cookie中设置到期日期?
- 9. 如何设置RxJS.Observable.timer()到期日期
- 10. angularjs带日期选择器如何设置日期
- 11. PHP-如何更新Cookie到期日期?
- 12. 设置来自不同域的Cookie的到期日期
- 13. 如何在Angular 2中设置cookie的失效日期?
- 14. 如何将倒数计时器设置为cookie过期日期?
- 15. 设置Cookie到期时间
- 16. 设置日期到昨天的日期
- 17. 如何在django中的SelectDateWidget中设置日期日期
- 18. Angularjs:$ cacheFactory的日期到期
- 19. 如何设置没有过期日期的cookie以及如何设置自定义cookie标头?
- 20. 用路径设置cookie但没有到期日期?
- 21. 在日期中设置特定日期
- 22. 使用js-cookie设置cookie到期
- 23. 我的cookie过期日期没有在localhost上设置
- 24. 在datepicker上设置当前日期AngularJS
- 25. 如何在java中设置到期日期
- 26. 如何在svn中设置到期日期
- 27. 如何在Woocommerce中设置购物车到期日期?
- 28. 如何在构造函数中设置到期日期?
- 29. 如何在Angular js中设置Cookie的到期时间?
- 30. 如何延长cookie设置在php中的到期时间?
暂时我使用本地存储和会话存储用于此目的的参考HTTP设置一些额外的选项,比如天数。 com/shwetankd/external/demos/webstorage_demo.htm –