我正在尝试实现以登录表单开头的单页面应用程序。对于前端我正在使用AngularJS。
在登录控制器中,我检查验证数据,如果没问题,我设置一个cookie(使用$ cookieStore服务)和一些用户数据并路由到另一个视图。在这里,在第二个视图的控制器中,我检查cookie中的用户是否为空,如果是,我将重定向到登录视图。
我想要做的是当用户关闭浏览器,或者离开页面时要删除cookie。 我试过用:
$scope.$on("$locationChangeStart", function(){
$cookieStore.remove('user');
});
或
$scope.$on("$destroy", function(){
$cookieStore.remove('user');
});
但它不起作用。 我希望避免用户登录(设置了cookie)并成功重定向到第二个视图的情况,并在此关闭后浏览器/离开页面(cookie仍然存在)。另一个用户写了第二个视图的url,因为带有第一个用户数据的cookie仍在那里,他成功进行了身份验证。
任何人都可以帮我吗?提前谢谢!
答案 0 :(得分:0)
我不确定。但也许浏览器会在你的逻辑中做任何事情之前关闭。
试试这个:
$scope.$on("$locationChangeStart", function(event){
event.preventDefault()
$cookieStore.remove('user');
});
答案 1 :(得分:0)
试试这段代码,它会起作用
$scope.$on('$locationChangeStart',function(event) {
if($scope.formsubmitted && $scope.myForm.$dirty){
var answer = confirm("Are you sure you want to leave this page?")
if (!answer) {
event.preventDefault();
}else{
$cookieStore.remove('user');
}
}
});