4

我正在尝试实现一个以登录表单开头的单页应用程序。对于前端,我使用的是 AngularJS。

在登录的控制器中,我检查身份验证数据,如果没问题,我设置一个带有一些用户数据的 cookie(使用 $cookieStore 服务)并路由到另一个视图。在这里,在第二个视图的控制器中,我检查 cookie 中的用户是否为空,如果是,我重定向到登录视图。

我想要做的是当用户关闭浏览器时,或者如果离开页面,cookie 将被删除。我曾尝试使用:

$scope.$on("$locationChangeStart", function(){
    $cookieStore.remove('user');
});

或者

$scope.$on("$destroy", function(){
    $cookieStore.remove('user');
});

但它不起作用。我想避免用户登录(设置了 cookie)并成功重定向到第二个视图,然后关闭浏览器/离开页面(cookie 仍然存在)的情况。另一个用户写入了第二个视图的 url,因为包含第一个用户数据的 cookie 仍然存在,所以他成功验证。

谁能帮我这个?

插件链接

4

2 回答 2

0

我不知道。但也许浏览器在您执行任何逻辑操作之前就关闭了。

尝试这个 :

$scope.$on("$locationChangeStart", function(event){
    event.preventDefault()
    $cookieStore.remove('user');
});
于 2013-10-27T19:16:41.043 回答
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');
        }
    }
 });
于 2014-01-03T10:28:00.833 回答