1

我在更新 $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 值也不见了。到底是怎么回事?

提前致谢。

4

1 回答 1

5

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

put(key, value, [options]);

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

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

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

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

现在也调用该服务$cookies。从 Angular 1.4 开始,您现在可以设置过期时间。在那之前是不可能的。

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

于 2015-05-11T15:04:51.190 回答