Запуск функции в определенное время - PullRequest
0 голосов
/ 08 октября 2019

Проблема в том, что в моем приложении реализована аутентификация JWT (бэкэнд C # / JS Front End). Я хочу автоматически перенаправить пользователя на страницу входа в систему (выкинуть его), как только истечет срок его действия.

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

const tokenExpiresIn = 10000; // <- token expires in 10 seconds

Опция 1

Good ol 'setTimeout

setTimeout( () => { /* do redirect */ }, tokenExpiresIn);

Вариант 2

Всегда проверяйте срок действия токена

setInterval( () => { /* is the current time greater than the expiry time */ }, 1000);

I вариант 1 может быть более эффективным, поскольку я не выполняю проверку постоянно (например, вариант 2 есть), но если я обновлю токен, мне придется добавить код для очистки /обновить interval. Тем не менее, Вариант 2 является своего рода привлекательным, потому что у меня уже есть логика, которая обновляет токен / срок действия через локальное хранилище.

Есть ли другие варианты в отношении элегантного способа запускафункция, которая перенаправляет страницу в определенное время?

Я уже проверяю токен при каждом запросе к серверу, чтобы охватить эту часть, просто пытаясь придумать сценарий удаленного бана / простоя пользователя.

1 Ответ

0 голосов
/ 08 октября 2019

И setInterval, и setTimeout великолепны и запускаются в соответствии с их контрактами.

Поскольку вы ищете дополнительные опции, вот что я сделал для внутреннего сайта.

  1. Используйте перехватчик для всех ответов API на ошибки перехвата. В вашем случае 40x.
  2. Выполняйте setInterval для auth api каждые x секунд. (трафик может пострадать)
  3. Использовать локальное хранилище для последней загрузки страницы и выполнить принудительное перенаправление через x минут.

Надеюсь, это поможет.

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