后端返回此标题:
Set-Cookie: session_id=5734283c02b8755f85a5f622; Domain=topleveldomain.com; Expires=Thu, 12-May-2016 06:52:55 GMT; Max-Age=5; Secure; Path=/
https://api.topleveldomain.com
并使用$cookies.get('session_id')
的返回5734283c02b8755f85a5f622
。但是,当我尝试使用$watch
时似乎没有任何作用:
$scope.$watch($cookies.get('session_id'), function(newValue, oldValue) {
console.log(oldValue);
console.log(newValue);
});
,也不
$scope.$watch(function() { return $cookies.get('session_id'); },
function(newValue) {
console.log(newValue);
}
);
以上任何一项,true
作为第三个参数,在5秒后记录undefined
。如果我从浏览器手动删除cookie,它不会记录undefined
。如果我调用$watch
),则不会触发$cookies.remove('session_id
。我确实试过Firefox和Chrome都没有成功。如何查看cookie是否已过期?
编辑:我目前的解决方案
由于$cookies.get()
似乎有用,我做了一个quickfix:
$interval(function() {
if($cookies.get('session_id') === undefined) {
console.log('logged out');
} else {
console.log('still logged in');
}
}, 2000);
然而,我发现这种“糟糕”的风格,因为我并没有真正使用适当的AngularJS。但是,在找到合适的解决方案之前,这是我正在使用的代码