【发布时间】:2015-07-21 23:49:55
【问题描述】:
我遇到了 $cookieStore 在更新后保留 cookie 值的问题。下面是处理 cookie 的 UserService 的两个方法:
var getCurrentUser = function () {
return $cookieStore.get('currentUser');
};
var updateCurrentUser = function () {
return $http.get(baseUrl + 'api/session').then(function (response) {
$cookieStore.put('currentUser', response.data);
$rootScope.$broadcast('currentUser', response.data);
}, function (response) {
$cookieStore.remove('currentUser');
$rootScope.$broadcast('currentUser', null);
});
};
在整个应用程序中,执行会影响当前用户元数据的操作后,我调用UserService.updateCurrentUser() 从服务器检索最新的用户数据并更新该 cookie。然后,在显示用户数据的地方,我有以下代码将更新该特定控制器中的用户模型:
$scope.$on('currentUser', function (event, data) {
$scope.user = data;
});
当我单步执行代码时,一切似乎都正常工作。在$cookieStore.put('currentUser', response.data); 行运行后,可以通过检查$cookieStore.get('currentUser') 来确认更新的值。但是,当我使用浏览器工具检查实际 cookie 时,cookie 值不会更新。我不确定浏览器工具是否需要刷新才能显示新数据。但是当我刷新页面时,更新后的 cookie 值也不见了。怎么回事?
提前致谢。
【问题讨论】:
-
查看 put(...) 的文档 - 第三个参数带有其他选项,包括 cookie 何时到期。否则它将在刷新时过期。此外,该服务现在称为
$cookies,我不确定您使用的是哪个版本的角度,但我认为它足够相似,可以从文档中工作:docs.angularjs.org/api/ngCookies/service/$cookies -
@DavidSpence:谢谢!我不得不用 1.4.0 替换 angular 1.3.15 以获得该文档中描述的 cookie 功能。我现在可以设置过期,虽然当前的问题是将 cookie 大小减少到 4kb 以下...
-
甜蜜!为甜蜜、甜蜜的互联网积分添加答案。
标签: angularjs cookies angular-cookies