如何检测AngularJS中的cookie过期?

时间:2017-06-29 02:18:32

标签: angularjs cookies

似乎$watch无法使用Cookie过期。这是我试过的代码

 $scope.$watch(function(){
        return $cookies.get('cookies')
    },function(newVal,oldVal){
        if(!newVal){
            console.log('ok')

        }
    })

我可以使用$interval进行检查。但我不希望每2秒或5秒进行一次呼叫摘要循环。

1 个答案:

答案 0 :(得分:1)

不幸的是,it is not possible to read the cookie expiration time in JS所以我第一次想到迭代它们并在其到期日期间执行操作是不可能的。

如果您不想在每次“cookie检查”中启动摘要,则可以禁用使用$interval设置为false的第四个参数来调用它。请参阅$interval docs

示例代码:

.run(function($cookies, $interval) {
  var previouslyAvailableCookies = Object.keys($cookies.getAll());
  var watchCookieChanges = function() {
     var availableCookies = Object.keys($cookies.getAll());
     var expiredCookies = previouslyAvailableCookies.filter(function(cookieName) { return availableCookies.indexOf(cookieName) < 0; });
     var newCookies = availableCookies.filter(function(cookieName) { return previouslyAvailableCookies.indexOf(cookieName) < 0; });
     if (expiredCookies.length || newCookies.length) {
       document.writeln("<p>New cookies: " + newCookies 
                      + "<br>Expired cookies: " + expiredCookies + '</p>');
     }
    previouslyAvailableCookies = availableCookies;
  };
  $interval(watchCookieChanges, 3000, 0, false);
})

codepen