2014-07-11 8 views
14

जारी नहीं हैं मेरे पास यादृच्छिक उपयोगकर्ता नाम फ़ंक्शन के साथ एक लॉगिन फ़ॉर्म है। सभी वे करते हैं बॉक्स की जांच और कुकी के माध्यम से सहेजा जाता है:

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

प्रवेश पृष्ठ पर उपयोगकर्ता रिटर्न, पहले मैं remember कुकी की जांच करते हैं:

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

तब मैं जाँच अगर वहाँ email कुकी में एक मूल्य:

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

अब सब से ऊपर ठीक काम कर रहा है, मैं के साथ यह जाँच के लिए लॉग इन कर सकते हैं, लॉग आउट करें और मैं इनपुट क्षेत्र में अपना उपयोगकर्ता नाम देख सकते हैं। अगर मैं इसे अनचेक करता हूं, लॉगिन और लॉगआउट करता हूं, तो उपयोगकर्ता नाम समाप्त हो जाता है।

मैं क्रोम देव उपकरणों में संसाधनों>> कुकीज़ टैब में यह भी हो सकता हूं।

मैं पृष्ठ को रीफ्रेश कर सकता हूं और फिर भी, उपयोगकर्ता नाम चेक किए जाने पर वहां है।

मेरा मुद्दा यह है कि जब मैं क्रोम बंद करता हूं, इसे फिर से खोलता हूं, तो सभी कुकी डेटा चला जाता है। ऐसा क्यों है? मुझे कुकीज़ के साथ शुरू करने के साथ ज्यादा अनुभव नहीं है।

उत्तर

20

है। आप इस कोड को आपको लगता है कि समाप्ति ठीक से yourCookie नामित कुकी पर सेट हो जाएगा देखेंगे चलाने के बाद अपना कुकीज़ को चेक करते हैं

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' 

: यहाँ एक बहुत ही सरल उदाहरण है।

वस्तु put कार्य करने के लिए एक तिहाई परम के रूप में पारित ऊपर इस तरह के path, domain और secure सेटिंग के रूप में, साथ ही अन्य विकल्पों के लिए अनुमति देता है। एक सिंहावलोकन के लिए the docs देखें।

+0

के लिए सिर्फ 'लोकल स्टोरेज' का उपयोग कर सकता हूं, धन्यवाद नोबिता – Ronnie

3

ब्राउज़र सत्रों पर लगातार कुकी होने के लिए, समाप्ति तिथि सेट की जानी चाहिए। दुर्भाग्य से, यह angularjs $ कुकी सेवा के साथ समर्थित नहीं प्रतीत होता है। यह पोस्ट देखें: AngularJS - How to set expiration date for cookie in AngularJS

+0

मैंने उस पोस्ट को पोस्ट करने के बाद देखा और यह पाया कि इसके साथ कुछ करने का अधिकार था। मैं किसी ऐसे व्यक्ति के निर्देश में आया जिसने आपको समाप्ति निर्धारित करने की अनुमति दी। मैं उम्मीद कर रहा था कि यह अभी भी मामला नहीं था। – Ronnie

+0

मुझे लगता है कि मैं इस – Ronnie

3

तो ऐसा लगता है कि इस मुद्दे के कारण समाप्ति हो रही है। AngularJS 1.2.19 के रूप में, आप समाप्ति दिनांक $cookie या $cookieStore के माध्यम से सेट करने में सक्षम नहीं हैं।

इसका समाधान करने के लिए, मैंने इसके बजाय स्थानीय संग्रहण का उपयोग किया। मैंने स्थानीय मॉड्यूल तक आसान पहुंच प्रदान करने के लिए इस मॉड्यूल का उपयोग किया: https://github.com/grevory/angular-local-storage

यह बदलने के लिए बहुत दर्दनाक था। मैंने $cookieStore.get('remember'); से localStorageService.get('remember'); बदल दिया ताकि आप देख सकें कि वे विधि नाम साझा करते हैं। put के बजाय, यह आप अंत में कुकीज़ के लिए कुछ विकल्प सेट कर सकते कोणीय v1.4 में add