Перенаправить на страницу входа, если локальное хранилище не найдено - PullRequest
0 голосов
/ 28 февраля 2019

Цель состоит в том, что если пользователь вышел из системы или localStorage не найден, он должен автоматически перенаправить на страницу входа и выйти из всех открытых вкладок в одном браузере.Если пользователь нажимает кнопку выхода из системы, он будет перенаправлен на страницу входа в систему, а если пользователь вручную очищает историю просмотра (в это время localStorage кажется пустым), он автоматически перенаправляет на страницу входа.Следующий код не работал при открытии с одной вкладкой и при удалении истории браузера (localStorage пусто).Есть предложения?

function signOutAllTab() {
    var allTabLogOut = 'allTabLogOut';
    try {
        localStorage.setItem(allTabLogOut, allTabLogOut);
        //localStorage.removeItem(allTabLogOut);
        return true;
    } catch (e) {
        return false;
    }
}

window.addEventListener('storage', function (event) {
    if (event.key == 'logout-event') {
        window.location = 'signin?logoutAllTabs=yes';
    }
}, false);

$(document).ready(function () {
    if (signOutAllTab() && signOutTabs) {
        $('#allSignOut').on('click', function () {
            localStorage.setItem('logout-event', 'logout');
            return true;
        });
        setInterval(function () {
            if (!localStorage.getItem("allTabLogOut"))
                localStorage.setItem('logout-event', 'logout' + Math.random());
        }, 1000);
    }
}); 

С уважением,

Саси

1 Ответ

0 голосов
/ 28 февраля 2019

Одна вкладка не работает, потому что когда страница гомологичной страницы изменяет локальное хранилище, оставшиеся гомологичные страницы инициируют событие хранения, как только они зарегистрированы.Это как одна вкладка наблюдает за изменениями других.Если вам нужны часы с одной вкладкой, вы можете написать код:

 var orignalremoveItem = localStorage.removeItem;
    localStorage.removeItem = function(key,newValue){
        var removeItemEvent = new Event("removeItemEvent");
        removeItemEvent.key = key;
        window.dispatchEvent(removeItemEvent);
        orignalremoveItem.apply(this,arguments);
    };
    window.addEventListener("removeItemEvent", function (e) {
        if(localStorage.getItem("token")){
            if(e.key=='token'){
                alert("token,delete success");
            }
        }else{
            alert("no token")
        }
    });
    localStorage.removeItem('token');

шаг 1: enter image description here

шаг 2: enter image description here

step3: enter image description here

step4: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...