как выйти из системы, когда вкладка / браузер закрыта? - PullRequest
0 голосов
/ 27 марта 2019

Применяется onbeforeunload в теге body для выхода пользователя из системы, когда вкладка / браузер закрывается в приложении MVC.

Мне как-то удалось обойти перенаправление на другие ссылки, а также на F5, но когда я нажимаю кнопку обновления, этовыводит меня из системы, также, когда я выбираю URL в адресной строке и нажимаю клавишу ввода, он выводит меня из системы.




     <body onbeforeunload="UserLogoutOnBrowserClose(event)">
<script>


        var href;
            var id;
            var logout;
            var descargar;
            var isF5Pressed;
            $('a').click(function () {
                href = ($(this).attr('href'));
                id = ($(this).attr('id'));
                if (id === "logout")
                    logout = id;
                else if (id === "descargar")
                    descargar = id;
            });
            $(document.body).on("keydown", this, function (event) {
                if (event.keyCode == 116) {
                    isF5Pressed = true;
                }
            });
            $(window).on("unload", this, function (event) {
                console.log(window.performance);
            });
            function UserLogoutOnBrowserClose(e) {
                debugger;
                var navigation = e.currentTarget.performance.navigation.type;
                var activeElement = document.activeElement;
                var myWindow;
                var Uri = '@Url.Action("LogOff", "Account",new { area="" })';

                var bodyID = '@bodyId';
                var attributes = document.activeElement.attributes;
                var attributesId = (document.activeElement.attributes).id;
                var baseURI = document.baseURI;
                // submit-pse-button check is applied to prevent user from signing out while redirecting to PSE portal
                if (attributesId.value === "submit-pse-button" || attributesId.value === "reclamarButton" || activeElement.localName === "a"
                    || activeElement.localName === "button" || logout != undefined || descargar != undefined || isF5Pressed != undefined) { }
                    else {
                        if (attributes.href != undefined) {
                            if (bodyID === "customer" && baseURI == attributes.href.value)
                                myWindow = window.open(Uri, "");
                        }
                        else {
                            if (bodyID === "customer")
                                myWindow = window.open(Uri, "");
                        }
                    }
            }
    </script>

Как обойти все другие события, такие как отправка формы, нажатие тега привязки, нажатие кнопки ввода дает возможность получить этособытие сработало или, по крайней мере, может проверить, нажата ли / попала / отправлена ​​какая-либо из вышеуказанных задач.

...