我已经阅读了其他文章,讨论了关闭浏览器时其他技术清理浏览器cookie的方式,但是这些都没有显示如何使AngularJS做到这一点。关闭浏览器后,如何触发AngularJS中的cookie删除方法运行?
在AngularJS 1.4.8中,可以使用语法删除Cookie $cookies.remove('keyname')
。我可以编写一种方法来按名称删除所有cookie。但是,如何确保在关闭浏览器时调用cookie删除方法?如果我希望在关闭浏览器选项卡时调用该方法,语法是否有所不同?
持续的努力:
按照@ User2341963的建议,我run
在应用程序主模块中的方法中添加了cookie删除代码。当我将其放在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');
};
}]);
如果仅需要cookie,因为您需要将其发送到后端服务器,则可以使用主控制器的$ destroy事件。
使用 $on.$destroy
控制器即将销毁时调用此事件。
另一种选择是使用angularjs sessionStorage
自动关闭窗口时删除会话存储
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句