我们要存储在cookie的用户授权信息不应在刷新(F5)浏览器的丢失。
我们要存储的授权信息中的“永久的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
上述功能允许其他选项,以及,如设置path
, domain
和secure
。 检查的文档的概述。
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 });