成功登录后,我设置:
$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中“清除所有历史记录”时,用户令牌仍然存在,我可以在限制内容中导航,直到我进行显式页面刷新。有没有办法检测到在没有页面刷新的情况下删除了凭证?
答案 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。