Я хотел бы знать, могу ли я вызвать функцию перед навигационной защитой. Когда пользователь вошел в систему, мой API возвращает объект пользователя с токеном доступа (хранится в памяти) и токеном refre sh (хранится только в cook ie http). При обновлении страницы мой API возвращает объект пользователя с новым токеном доступа, если есть действующий токен refre sh, но я не знаю, как это сделать перед защитой навигации. Моя навигационная защита - это просто метод beforeEach, который проверяет, есть ли пользовательский объект в магазине, если нет пользовательского объекта, он возвращается на страницу входа. Учитывая, что охранник вызывается перед вызовом API, он всегда отправляет пользователя по маршруту входа
Здесь маршрутизатор:
const routes = [
{
path: "/",
name: "Home",
component: Home,
},
{
path: "/login",
name: "Login",
component: Login,
},
{
path: "/about",
name: "About",
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () =>
import(/* webpackChunkName: "about" */ "../views/About.vue"),
},
];
const router = new VueRouter({
routes,
});
router.beforeEach(async (to, from, next) => {
if (to.name !== "Login" && !store.getters.user.userId) {
next({ name: "Login" });
} else next();
});
export default router;
Я хочу вызвать функцию refre sh ниже перед маршрутизатором и методом beforeEach (не перед маршрутом) для сохранения входа в систему с вызовом API, который возвращает новый объект пользователя
async refresh({ commit }) {
let response = await axios.post(user_uri + "refresh_token");
commit("setUser", response.data);
},