Подтвердить что ты не робот

Файлы cookie в формате AngularJS не сохраняются

У меня есть форма входа в систему с функцией имени пользователя. Все, что они делают, это установить флажок, и файл cookie сохраняется через:

$scope.toggleCookie = function()
{
    //-- $scope.remember is the model for the checkbox
    $cookieStore.put('remember', $scope.remember);
    if (!$scope.remember) $cookieStore.remove('email');
}

Когда пользователь вернется на страницу входа в систему, сначала проверьте файл remember cookie:

$scope.remember = ($cookieStore.get('remember') == null || $cookieStore.get('remember') == false) ? false : true;

Затем я проверяю, есть ли в файле email cookie значение:

$scope.email = ($cookieStore.get('email') != null) ? $cookieStore.get('email') : '';

Теперь все вышеописанное работает нормально, я могу войти в него с проверкой, выйти, и я могу видеть свое имя пользователя в поле ввода. Если я сниму его, войдите в систему и выйдите из системы, имя пользователя исчезнет.

Я также вижу это на вкладке resources- > cookie в инструментах chrome dev.

Я могу обновить страницу и все еще, имя пользователя есть, когда отмечено.

Моя проблема заключается в том, что когда я закрываю хром, снова его открываю, все данные cookie исчезли. Почему это? У меня нет большого опыта работы с файлами cookie.

4b9b3361

Ответ 1

В Angular v1.4 вы можете наконец установить некоторые параметры для файлов cookie. Вот очень простой пример:

var now = new $window.Date(),
    // this will set the expiration to 6 months
    exp = new $window.Date(now.getFullYear(), now.getMonth()+6, now.getDate());

$cookies.put('yourCookie','blabla',{
  expires: exp
});

var cookie = $cookies.get('yourCookie');
console.log(cookie); // logs 'blabla'

Если вы проверите свои файлы cookie после запуска этого кода, вы увидите, что срок действия будет установлен в файл cookie с именем yourCookie.

Объект, переданный в качестве третьего параметра функции put выше, позволяет также использовать другие параметры, такие как установка path, domain и secure. Проверьте документы для обзора.

Ответ 3

Таким образом, это, по-видимому, истекает, вызывая проблему. Начиная с версии AngularJS 1.2.19, вы не можете установить срок годности через $cookie или $cookieStore.

Чтобы исправить это, вместо этого я использовал локальное хранилище. Я использовал этот модуль для легкого доступа к локальному хранилищу: https://github.com/grevory/angular-local-storage

Было довольно безболезненно меняться. Я изменил $cookieStore.get('remember'); на localStorageService.get('remember');, так как вы можете видеть, что они разделяют имена методов. Вместо put он add