Chupachar
@Chupachar
front-end dev

Как решить проблему с реализацией проверки логина с использованием setInterval после перезагрузки страницы?

Всем привет! Пожалуйста, объясните, как правильно реализовать проверку логина в функции checkLogin() с интервалом в 3 секунды (будет час). Проблема заключается в том, что при вызове setInterval функции checkLogin(), после перезагрузки страницы она перестает работать из-за того, что родительская функция getAuthentication() уже не запускается. Это происходит потому, что вход в систему осуществляется через одноименную функцию только один раз. Как бы вы реализовали эту задачу?
Вот код:
<template>
    <div>
        <BaseButton @click.prevent="getAuthentification">Entry</BaseButton>
    </div>
</template>
<script setup >
  import { ref, onMounted } from 'vue';
  import { useRouter } from 'vue-router';
  import axios from 'axios';

  const currentDomain = window.location.origin;

  const router = useRouter();

  const getAuthURL = `${currentDomain}/Login`;
  const checkLoginURL = `${currentDomain}/CheckLogin`;

  const checkLogin = async () => {

    try {
      const response = await axios.get(checkLoginURL);

      if (response.data.result) {
        console.log('result: ', response.data.result);
        return response.data.result;
      }
    } catch (error) {
      if (error.response && error.response.status === 422) {

        router.push('/Admin'); //Страница ввода логин/пароль

        const errorMessages = error.response.data.errors;
        checkLoginErrorMessages.value.push(errorMessages.Login.join(''));

      }
    }
  }

  const getAuthentification = async () => {

      try {
        const response = await axios.post(getAuthURL, authenticationObj);

        if (response.request.status === 200) {

          router.push('/ApplicationList'); //страница админки

          setInterval(async () => {
            await checkLogin();
          }, 3000); //нужно запускать каждые 3 секунды пока response.request.status === 200
        }

        authenticationFields.value.forEach(field => {
          field.errorMessages = [];
        });

      } catch (error) {
        console.log(error)
      }
    }

  </script>
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 1
Chupachar
@Chupachar Автор вопроса
front-end dev
Задача решена. В целом, поигрался с компонентами и нашел костыльное решение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы