检测已删除cookie而不刷新页面

时间:2017-08-02 12:02:30

标签: javascript angularjs cookies

成功登录后,我设置:

$rootScope.globals = {
    currentUser: {
        username: username,
        token: token
    }
};

var cookieExp = new Date();
cookieExp.setHours(cookieExp.getHours() + 1);

$cookies.putObject('globals', $rootScope.globals, { expires: cookieExp });

当我在Mozilla Firefox中“清除所有历史记录”时,用户令牌仍然存在,我可以在限制内容中导航,直到我进行显式页面刷新。有没有办法检测到在没有页面刷新的情况下删除了凭证?

1 个答案:

答案 0 :(得分:1)

为了与Cookie同步,globals应在每次使用时拨打$ cookies,例如是一个单一的事实来源:

app.service('globals', function ($cookies) {
  this.get = function (key) {
    return $cookies.getObject('globals');
  };
  this.set = function (key, obj) {
    var cookieExp = new Date();
    cookieExp.setHours(cookieExp.getHours() + 1);
    $cookies.putObject('globals', obj, { expires: cookieExp });
  };
});

由于cookie请求可能效率低下,因此该服务可以选择提供过期缓存。

使用根范围作为全局变量范围is antipattern