SPA : как избежать появления страницы входа при обновлении страницы с помощью Vuejs

SPA : как избежать появления страницы входа при обновлении страницы с помощью Vuejs

06.01.2020 04:46:33 Просмотров 52 Источник

Я следую приведенному ниже руководству, как вы увидите, поэтому, когда я обновлю страницу во время загрузки Spiner работает мой текущий маршрутизатор будет страница входа в систему и после загрузки Spiner закончил, то страница панели мониторинга вернулась снова, как я могу решить эту проблему. Впервые я не использовал check the store внутри промежуточного программного обеспечения, что означает, что при обновлении страницы система выйдет из системы.

маршрут.JS

const routes = [
    {
        path: '/login',
        name: 'login',
        component: Login,
        meta: {
            middleware: [
                guest
            ]
        }
    },
    {
        path: '/dashboard',
        name: 'dashboard',
        component: () =>
            import ( /* webpackChunkName: "dashboard" */ '@/views/admin/Dashboard.vue'),
        meta: {
            middleware: [
                auth
            ]
        }
    }
}

промежуточное программное обеспечение auth.JS


export default function auth ({ next, store }){
    if(!store.getters.auth){
        store.dispatch('isLogin');
    }

    if(!store.getters.auth){
        return next({
            // name: 'login'
            path: '/login',
        });
    }


    return next()
}

гость промежуточного ПО.JS


export default function guest ({ next, store}){
    if(!store.getters.auth){
        store.dispatch('isLogin');
    }

    if(store.getters.auth){
        return next({
        //    name: 'dashboard'
            path: '/dashboard',
        })
    }


    return next()
}

индекс.JS


import routes from "./routes";
const router = new VueRouter({
    mode: 'history',
    linkActiveClass: 'active',
    base: process.env.BASE_URL,
    routes
});


router.beforeEach((to, from, next) => {
    // console.log("to, from, next", to, from, next, to.meta.middleware);

    if (!to.meta.middleware) {
        return next()
    }
    const middleware = to.meta.middleware
// console.log("middleware", middleware);
    const context = {
        to,
        from,
        next,
        store
    }
    return middleware[0]({
        ...context
    })
});
У вопроса есть решение - Посмотреть?

Ответы - SPA : как избежать появления страницы входа при обновлении страницы с помощью Vuejs / SPA : how to avoid login page appearing when refresh page using Vuejs

Является ответом!
Delena Malan

06.01.2020 05:03:55

Действия Vuex (как и ваше store.getters.auth после того как Вы посланы store.getters.auth.

Вы можете использовать синтаксис "then" для обещаний, чтобы убедиться, что ваше действие было завершено, прежде чем проверять, вошел ли пользователь в систему:

isLogin

А затем вызовите промежуточное программное обеспечение с помощью export default async function auth({ next, store }) { if (!store.getters.auth) { store.dispatch("isLogin").then(_ => { if (!store.getters.auth) { return next({ path: "/login" }); } return next(); }); } }

https://stackoverflow.com/questions/59613254/spa-how-to-avoid-login-page-appearing-when-refresh-page-using-vuejs/59613508#comment105393826_59613508
отлично, это работа.
Закрыть X