2017-08-02 49 views
0

成功登录后,我设置:检测到的Cookie已不刷新页面删除

$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

这是你真正需要处理的情况吗?不清除历史记录的用户是否也会关闭应用程序的选项卡?但是你可以做的是定义一个时间间隔并检查cookie值的变化。 –

+0

在我的情况下,没有必要处理,但仍然好奇。 – Justas

回答

1

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

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