2014-07-11 3 views
14

사용자 이름 기억 기능이있는 로그인 양식이 있습니다. 그들이 모든 확인란을 선택하고 쿠키를 통해 저장됩니다 로그인 페이지로 사용자가 반환 먼저 나는 remember 쿠키 검사 할 때

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

: 다음

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

을 내가 거기에 있는지 확인 email 쿠키에 값 :

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

지금 위의 모든 잘 작동, 나는 그것이 확인으로 로그인 로그 아웃 I는 입력 필드에 사용자 이름을 볼 수 있습니다. 선택을 해제하면 로그인과 로그 아웃이 끝나고 사용자 이름은 사라집니다.

이 문제는 chrome dev 도구의 resources-> cookies 탭에서도 볼 수 있습니다.

페이지를 새로 고칠 수 있지만 선택하면 사용자 이름이 표시됩니다.

내 문제 크롬을 닫고 다시 열면 모든 쿠키 데이터가 사라집니다. 왜 이런거야? 나는 쿠키에 대한 경험이 많지 않다.

답변

20

을합니다. 다음은 아주 간단한 예는 다음과 같습니다

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' 

당신이 만료가 제대로 yourCookie라는 이름의 쿠키로 설정됩니다 것을 볼이 코드를 실행 한 후 쿠키를 확인하세요. put 함수 제 PARAM로 전달

목적은 상기와 같은 path, domainsecure 및 설정과 같은, 다른 옵션도 가능하다. 개요를 보려면 the docs을 확인하십시오.

+0

감사합니다. Nobita – Ronnie

3

브라우저 세션에서 쿠키를 유지하려면 만료 날짜를 설정해야합니다. 안타깝게도 이것은 angularjs $ cookie 서비스에서 지원되지 않는 것 같습니다. 이 게시물을 참조하십시오 : AngularJS - How to set expiration date for cookie in AngularJS

+0

나는 이것을 게시하고 그와 관련이 있다고 생각한 후에 그 실을 보았습니다. 나는 당신이 만료를 설정할 수 있도록 만든 지시어를 발견했습니다. 나는 아직도 이것이 사실이 아니길 바랐다. – Ronnie

+0

나는 이것에 대해서'localStorage'를 사용 하는게 좋을 것이라고 생각합니다. – 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

관련 문제