AngularJS关闭浏览器时删除所有Cookie的方法

时间:2016-02-10 01:28:14

标签: javascript angularjs

我已阅读其他帖子,讨论在浏览器关闭时其他技术清理浏览器cookie的方式,但没有一个显示如何让AngularJS执行此操作。 如何在浏览器关闭时触发AngularJS中的cookie删除方法?

在AngularJS 1.4.8中,可以使用语法$cookies.remove('keyname')删除cookie。我可以编写一个方法来按名称删除所有cookie。但是,如何在浏览器关闭时确保调用cookie删除方法?如果我希望在关闭浏览器选项卡时调用该方法,语法是否有所不同?

正在进行的努力:

根据@ User2341963的建议,我将cookie删除代码添加到应用程序主模块中的run方法。当我在应用程序的其他地方放入logout()方法时,相同的确切代码正确运行,但是当我在firefox调试器中放置断点并关闭浏览器时,我发现浏览器中的cookie删除代码永远不会运行关闭了。 当浏览器关闭时,AngularJS会对代码进行哪些具体更改以获取Cookie?

以下是应用主模块的代码,包括run()方法:

angular
    .module('hello', [ 'ngRoute', 'auth', 'home', 'secure', 'public1', 'navigation' ])
    .config(

            function($routeProvider, $httpProvider, $locationProvider) {

                $locationProvider.html5Mode(true);

                $routeProvider
                .when('/', {
                    templateUrl : 'js/home/home.html',
                    controller : 'home'
                })//plus other routes
                .otherwise('/');

                $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

            }
    ).run(['$cookies', '$window', '$log', function($cookies, auth, $window, $log) {

        //other stuff

        $window.onbeforeunload = function() {
            // Clearing all cookies now!
            $cookies.remove("AUTH1"); 
            $cookies.remove("AUTH2");
            $cookies.remove('procStep');
            $cookies.remove('usrname');
            $cookies.remove('exists');
            $cookies.remove('wid');
        };
    }]);

1 个答案:

答案 0 :(得分:1)

如果您只需要cookie,因为您需要将其发送到后端服务器,您可以使用主控制器的$destroy事件。

使用$on.$destroy

当控制器即将被销毁时调用此事件。

其他选项是使用angularjs sessionStorage

自动关闭窗口时删除会话存储