状态在多个应用程序之间共享。 - vuex-persistedstate
State is shared between multiple applications. - vuex-persistedstate
我正在处理多个使用 vuex-persistedstate 的 Vue 站点。我在它们之间重用了某些模块,例如身份验证。当我在它们之间切换时,我在状态中有相同的用户对象。
我想这可能与域相同 (localhost:8000) 这一事实有关,但是有没有办法解决这个问题?因为每次在应用程序之间切换时手动删除所有数据并不好玩。
您可以尝试为每个应用分配一个唯一的前缀(也可以是后缀)。然后,您可以在createPersistedState
中设置getItem
、setItem
和removeItem
方法。例如:
import { Store } from 'vuex';
import createPersistedState from 'vuex-persistedstate';
const KEY_PREFIX = 'PrefixUniqueToEachApp_';
const store = new Store({
plugins: [
createPersistedState({
storage: {
getItem: (key) => localStorage.getItem(KEY_PREFIX + key),
setItem: (key, value) => localStorage.setItem(KEY_PREFIX + key, value),
removeItem: (key) => localStorage.removeItem(KEY_PREFIX + key),
},
}),
],
});
应该可以。如果您愿意,您也可以将它与 cookie(或任何其他类型的存储)一起使用。
我正在处理多个使用 vuex-persistedstate 的 Vue 站点。我在它们之间重用了某些模块,例如身份验证。当我在它们之间切换时,我在状态中有相同的用户对象。
我想这可能与域相同 (localhost:8000) 这一事实有关,但是有没有办法解决这个问题?因为每次在应用程序之间切换时手动删除所有数据并不好玩。
您可以尝试为每个应用分配一个唯一的前缀(也可以是后缀)。然后,您可以在createPersistedState
中设置getItem
、setItem
和removeItem
方法。例如:
import { Store } from 'vuex';
import createPersistedState from 'vuex-persistedstate';
const KEY_PREFIX = 'PrefixUniqueToEachApp_';
const store = new Store({
plugins: [
createPersistedState({
storage: {
getItem: (key) => localStorage.getItem(KEY_PREFIX + key),
setItem: (key, value) => localStorage.setItem(KEY_PREFIX + key, value),
removeItem: (key) => localStorage.removeItem(KEY_PREFIX + key),
},
}),
],
});
应该可以。如果您愿意,您也可以将它与 cookie(或任何其他类型的存储)一起使用。