0

我是 AngularJS 的新手,我被要求修改我们的应用程序,以便当用户关闭浏览器时,我们也会将它们从 Auth0 服务中注销。

我有下面的代码,但我无法启动它。请帮忙。

$rootScope.$on("$destroy", function() {
    lockService.logout();
});

lockService.logout()保存用户单击按钮时成功注销用户的功能logout,包括该Auth0 signout功能。

在某处我读到我可以使用$on.$destroy主控制器的,但我不知道该怎么做。上面的代码实际上在mainController函数内部,但它仍然不起作用。

这是我找到答案的地方:https ://stackoverflow.com/a/36444134/1168597

4

2 回答 2

0

我找到了一种更清洁、更有效的方法。

$rootScope.$on('$locationChangeStart', function () {

    if (!($window.performance.navigation.type === 1) && lockService.isAuthenticated()) {
        $rootScope.logout();
    }

});

所以这里 if window.performance.navigation.typeis 1,这意味着页面是refresh-ed。然后我要做的是,如果它没有刷新并且我的lockService.isAuthenticated()返回为真,我logout就是用户。

于 2018-08-13T08:35:21.097 回答
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();
                };
            }
        };
    }
]);
于 2018-08-06T18:07:18.483 回答