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 开始,您现在可以设置到期时间。在那之前这是不可能的。
我遇到 $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 开始,您现在可以设置到期时间。在那之前这是不可能的。