Javascript 手动导航vue路由器路由时,Vuex将丢失
仅在SAFARI浏览器上。 当我登录后在导航栏上手动写入url时,例如:http://x.x.x.x:8080/gestione“,浏览器将丢失vuex存储状态(当前用户的gest_用户模块也会丢失),并重定向到登录组件,我正在使用vuex-PERSISTEDSTATE: 路线: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",
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时,问题将返回