我在AngularJS中相对较新,因此我被要求修改我们的应用程序,以便当用户关闭浏览器时,我们也将其注销Auth0服务。
我有下面的代码,但无法启动。请帮助。
$rootScope.$on("$destroy", function() {
lockService.logout();
});
lockService.logout()
拥有在用户单击logout
按钮时成功注销用户的功能,包括Auth0
signout
函数。
我在某处听说可以使用主控制器的$on.$destroy
,但不确定如何执行此操作。上面的代码实际上在mainController
函数内部,但是仍然无法正常工作。
这是我找到答案的地方:https://stackoverflow.com/a/36444134/1168597
答案 0 :(得分:0)
您可以在您的body元素中添加这样的指令。
<body body-unload></body>
app.directive('bodyUnload', [
function () {
return {
restrict: 'A',
replace: false,
link: function (scope, element) {
function cleanupApp(){
// do cleanup here
}
element[0].onbeforeunload = function() {
cleanupApp();
};
}
};
}
]);
答案 1 :(得分:0)
我找到了一种更清洁,更有效的方法。
$rootScope.$on('$locationChangeStart', function () {
if (!($window.performance.navigation.type === 1) && lockService.isAuthenticated()) {
$rootScope.logout();
}
});
因此,在这里,如果window.performance.navigation.type
是1
,则表示该页面是refresh
版。然后,我要做的是如果未刷新并且我的lockService.isAuthenticated()
返回true,我logout
用户。