Как вы создаете таймер сеанса простоя, который выводит пользователя из системы с реакцией?

Мне удалось создать постоянное локальное хранилище, которое позволяет пользователю входить в систему и хранить случайно сгенерированный токен API, необходимый для связи с API.

Проблема, с которой я сталкиваюсь, заключается в том, что моя кнопка выхода больше не работает, потому что хранилище сеансов хранит информацию для входа и токен в локальном хранилище и не удаляет, если я не сделаю это вручную.

Ниже мой код.

import { createStore, applyMiddleware, compose } from "redux";
import rootReducer from "../reducers";
import thunk from "redux-thunk";

function saveToLocalStorage(state) {
  try {
    const serializedState = JSON.stringify(state);
    localStorage.setItem("state", serializedState);
  } catch (e) {
    console.log(e);
  }
}

function loadFromLocalStorage() {
  try {
    const serializedState = localStorage.getItem("state");
    if (serializedState === null) return undefined;
    return JSON.parse(serializedState);
  } catch (e) {
    console.log(e);
    return undefined;
  }
}

const storeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ 
    || compose;

const persistedState = loadFromLocalStorage();

const store = createStore(
  rootReducer,
  persistedState,
  storeEnhancers(applyMiddleware(thunk))
);

store.subscribe(() => saveToLocalStorage(store.getState()));

export default store;

person TheAlkhemist    schedule 03.02.2020    source источник
comment
window.localStorage.removeItem(key) должен запускаться программно   -  person SamwellTarly    schedule 03.02.2020
comment
Обычно сеансовые ключи истекают через некоторое время, и их необходимо обновить, что подходит для сценариев, когда пользователь просто закрывает окно браузера (таким образом, ваш код не может быть запущен). Вы ведь не пытаетесь развернуть собственную систему безопасности?   -  person JDB still remembers Monica    schedule 03.02.2020
comment
Вариант этого вопроса уже задавали и отвечали несколько раз. Даже если вы не используете JWT, прочитайте это.   -  person Tomasz Kasperczyk    schedule 03.02.2020
comment
См. код выше. Как я уже сказал, я смог создать постоянное хранилище и попробовал несколько вариантов этого, чтобы попытаться обновить токен set api, но я не уверен, почему он не очищается в локальном хранилище сеансов.   -  person TheAlkhemist    schedule 04.02.2020