簡體   English   中英

AngularJS $ cookies不會持久存在

[英]AngularJS $cookies are not persisting

我有一個記住用戶名功能的登錄表單。 他們所做的只是勾選方框,並通過以下方式保存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') : '';

現在以上所有工作正常,我可以登錄檢查,注銷,我可以在輸入字段中看到我的用戶名。 如果我取消選中它,登錄並注銷,用戶名就會消失。

我也可以在chrome dev工具的resources-> cookies選項卡中看到這種情況。

我可以刷新頁面,但是,當檢查時,用戶名就在那里。

我的問題是,當我關閉chrome時,重新打開它,所有cookie數據都消失了。 為什么是這樣? 我沒有太多使用cookies的經驗。

在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,您將看到過期將正確設置為名為yourCookie的cookie。

作為第三個參數傳遞給上面的put函數的對象也允許其他選項,例如設置pathdomainsecure 查看文檔以獲取概述。

要使cookie在瀏覽器會話上保持持久性,應設置到期日期。 不幸的是,angularjs $ cookie服務似乎不支持這一點。 請參閱此文章: AngularJS - 如何在AngularJS中設置cookie的到期日期

所以它似乎是導致問題的到期。 從AngularJS 1.2.19開始,您無法通過$cookie$cookieStore設置到期日期。

為了解決這個問題,我使用了本地存儲。 我使用此模塊可以輕松訪問本地存儲: https//github.com/grevory/angular-local-storage

改變是非常輕松的。 我更改了$cookieStore.get('remember'); localStorageService.get('remember'); 所以你可以看到它們共享方法名稱。 它不是put ,而是add

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM