Всем привет! Пожалуйста, объясните, как правильно реализовать проверку логина в функции
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>