У меня есть маршрутизатор, который работает с ошибками и не может понять, как это исправить.
Это глобальный маршрутизатор, который должен проверять срок действия токена jwt и обрабатывать маршрутизацию. Все работало нормально до добавления некоторых функций, таких как isActivated
account. Поэтому теперь мне нужно проверить, есть ли у пользователя токен и активирована ли учетная запись пользователя.
1) Если у пользователя есть токен, он должен сделать next (), иначе next ("/ login") (redirect)
2) Если у пользователя есть токен, но его учетная запись еще не активирована (первый вход в систему), он должен перенаправиться на страницу настройки далее ("/ setup"), пока он не предоставит некоторую информацию.
Так что это моя охрана
router.beforeEach((to, from, next) => {
const token = localStorage.getItem("token");
const tokenExp = parseInt(localStorage.getItem("tokenExp"))
const isActivated = localStorage.getItem("isActivated")
const now = new Date().getTime() + 129600000
const requiresAuth = to.matched.some(record => record.meta.requiresAuth);
console.log("first")
if (requiresAuth && !token) {
next('/login');
} else if (requiresAuth && token) {
if (now > tokenExp) {
axios.post("/user/t/r", token)
.then(e => {
const token = e.headers['authorization'].replace("Bearer ", "");
localStorage.setItem("token", token);
localStorage.setItem("tokenExp", (new Date().getTime() + 172800000).toString())
if (isActivated === 'true') {
next()
} else {
next("/setup")
}
})
.catch(e => {
localStorage.removeItem("token")
localStorage.removeItem("tokenExp")
localStorage.removeItem("fullName")
localStorage.removeItem("role")
next('/login')
})
} else {
console.log("second")
if (isActivated === 'true') {
console.log("third")
next();
} else {
console.log("fourth")
next("/setup")
}
}
} else {
next();
}
})
А это мой console.log с ошибкой при входе в систему: