Angular $cookieStore 在刷新时不保留更新的 cookie

Angular $cookieStore not retaining updated cookie on refresh

我遇到 $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值。怎么回事?

提前致谢。

查看使用 $cookie 服务添加 cookie 的文档:

put(key, value, [options]);

第三个参数允许附加选项:

  • 路径(字符串)
  • 域(字符串)
  • 过期(日期)
  • 安全(布尔值)

您应该设置“expires”来定义 cookie 何时过期,否则 cookie 会在您刷新或离开站点时过期。

$cookies.put("id", 1, {
    expires: new Date(2016, 1, 1)
});

此外,该服务现在称为 $cookies。从 Angular 1.4 开始,您现在可以设置到期时间。在那之前这是不可能的。

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