Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 手动导航vue路由器路由时,Vuex将丢失_Javascript_Vue.js_Vuex_Vue Router - Fatal编程技术网

Javascript 手动导航vue路由器路由时,Vuex将丢失

Javascript 手动导航vue路由器路由时,Vuex将丢失,javascript,vue.js,vuex,vue-router,Javascript,Vue.js,Vuex,Vue Router,仅在SAFARI浏览器上。 当我登录后在导航栏上手动写入url时,例如:http://x.x.x.x:8080/gestione“,浏览器将丢失vuex存储状态(当前用户的gest_用户模块也会丢失),并重定向到登录组件,我正在使用vuex-PERSISTEDSTATE: 路线: const routes = [ { id: "login", path: "/login", name: "login",

仅在SAFARI浏览器上。 当我登录后在导航栏上手动写入url时,例如:http://x.x.x.x:8080/gestione“,浏览器将丢失vuex存储状态(当前用户的gest_用户模块也会丢失),并重定向到登录组件,我正在使用vuex-PERSISTEDSTATE:

路线:

const routes = [
  {
    id: "login",
    path: "/login",
    name: "login",
    component: Login,
    meta: {
      ...meta.default
    }
  },
  {
    id: "home",
    path: "/",
    name: "homeriluser",
    component: HomeUtente,
    meta: {
      ...meta.public, authorize: [Role.user, Role.admin]
    },
  },
    {
      id: "gestione",
        path: "/gestione",
        name: "gestrilevazioni",
        component: GestRils,
        meta: {
            ...meta.admin, authorize: [Role.admin]
        }
    },
  {
    path: "/modifica",
    name: "modificaril",
    component: EditRil,
    meta: {
      ...meta.public, authorize: [Role.user, Role.admin]
    }
  },
  {
    path: "*",
    name: "page404",
    component: Pagenotfound,
    meta: {
      ...meta.public
    }
  }
];
我的路由器:

import Vue from 'vue';
import VueRouter from 'vue-router';
import routes from "./router";
import store from "@/store/index"

Vue.use(VueRouter);

const router = new VueRouter({
  routes,
  mode: "history"
});

router.beforeEach(async (to, from, next) => {
  
  // redirect to login page if not logged in and trying to access a restricted page
  const { auth } = to.meta;
  const { authorize } = to.meta;
  const currentUser = store.state.gest_user;
  
  if (auth) {
    if (!currentUser.username) {
      // not logged in so redirect to login page with the return url
      return next({ path: '/login', query: { returnUrl: to.path } });
    }
    
    // check if route is restricted by role
    if (authorize && authorize.length && !authorize.includes(currentUser.roles)) {
      // role not authorised so redirect to home page
      return next({ path: '/' });
    }
  }
  next();
});

export default router;
我的商店:

import createPersistedState from "vuex-persistedstate";

Vue.use(Vuex);
Vue.prototype.$http = axios;
Vue.prototype.axios = axios;

const debug = process.env.NODE_ENV !== "production";

const customPersist = createPersistedState({
  paths: ["gest_user", "gest_rilevazione.rilevazione"],
  storage: {
    getItem: key => sessionStorage.getItem(key),
    setItem: (key, value) => {
      sessionStorage.setItem(key, value)
    },
    removeItem: key => sessionStorage.removeItem(key)
  }
});

const store =  new Vuex.Store({
  modules: {
    pubblico: pubblico,
    amministrazione: amministrazione,
    loading_console: loading_console,
    login_console: login_console,
    gest_itemconc: gest_itemconc,
    gest_rilslave: gest_rilslave,
    gest_rilmaster: gest_rilmaster,
    sidebar_console: sidebar_console,
    gest_user: gest_user,
    gest_newril: gest_newril,
    gest_rilevazione: gest_rilevazione
  },
  plugins: [customPersist],
  strict: debug
});

export default store;

有人能告诉我为什么会发生这种情况吗?

您可能正在使用浏览器的本地存储来保存数据。能否检查Safari浏览器中是否启用了本地存储?

我正在使用会话存储,但本地存储已启用。如果我使用inspector web,则问题不存在,但当我关闭inspector web时,问题将返回