2015-05-11 2 views
0

У меня возникли проблемы с $ cookieStore, сохраняющим значение 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 также не должно быть видно. Что происходит?

Заранее спасибо.

+1

Заканчивать документацию для пут (...) - есть третий аргумент, с дополнительными опциями, включая, когда куки должен истекать. В противном случае он истечет при обновлении. Также служба теперь называется '$ cookies', я не уверен, какую версию углового вы используете, но я предполагаю, что она достаточно похожа на работу с документами: https://docs.angularjs.org/api/ngCookies/service/$ cookies –

+0

@DavidSpence: Спасибо! Мне пришлось заменить угловой 1.3.15 на 1.4.0, чтобы получить функциональность файла cookie, описанную в этом документе. Я могу установить срок действия, хотя текущая проблема уменьшает размер файла cookie до 4kb ... – im1dermike

+0

Sweet! Добавление ответа на сладкие, сладкие интернет-точки. –

ответ

4

Заканчивать документацию, добавив печенье с помощью $cookie службы:

put(key, value, [options]); 

Третий аргумент позволяет дополнительные опции:

  • путь (строка)
  • домен (строка)
  • истекает (дата)
  • secure (boolean)

Вы должны установить «expires», чтобы определить, когда срок действия файла cookie должен истечь, иначе cookie истечет при обновлении или выходе из сайта.

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

Также услуга теперь называется $cookies. Начиная с Углового 1.4, вы можете установить истечение срока действия. До тех пор это было невозможно.

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

Смежные вопросы