成功登录后,我设置:
$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中“清除所有历史记录”时,将保留用户令牌,并且可以浏览受限制的内容,直到进行明确的页面刷新为止。有什么方法可以检测到凭据已被删除而无需刷新页面?
最佳答案
为了与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。