Javascript 单个应用程序中的两个独立存储

Javascript 单个应用程序中的两个独立存储,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我有一个vue.js应用程序,其中包含登录页、用户仪表板和管理仪表板。它们的状态大多不同,它们只共享一个shared模块,包括页面宽度、令牌、当前用户等 问题是vuex只允许有一个集中的存储,这意味着任何进入登录页的人都可以看到整个存储结构,这可能是一个潜在的安全问题 完美的解决方案如下: store: Object.merge({}, SharedStore, UserDashboardStore), 在另一个地方: store: Object.merge({}, SharedStore,

我有一个
vue.js
应用程序,其中包含登录页、用户仪表板和管理仪表板。它们的状态大多不同,它们只共享一个
shared
模块,包括页面宽度、令牌、当前用户等

问题是vuex只允许有一个集中的存储,这意味着任何进入登录页的人都可以看到整个存储结构,这可能是一个潜在的安全问题

完美的解决方案如下:

store: Object.merge({}, SharedStore, UserDashboardStore),
在另一个地方:

store: Object.merge({}, SharedStore, AdminDashboardStore),
这里的变量是
Vuex.Store
实例


但它显然不起作用。这个问题有更好的解决方案吗?

如果我误解了你的问题,请原谅,但是你不能创建多个商店吗? 我还要提醒您记住,客户端的任何内容都应该假定用户可以访问它。所以,如果与安全相关,不要在客户端存储东西

~/store/admin/actions.js
~/store/admin/getters.js
~/store/admin/mutations.js
~/store/admin/state.js
~/store/admin/store.js
~/store/user/actions.js
~/store/user/getters.js
~/store/user/mutations.js
~/store/user/state.js
~/store/user/store.js
~/store/actions.js
~/store/getters.js
~/store/mutations.js
~/store/state.js
~/store/store.js
~/store/store.js

从“Vue”导入Vue
从“Vuex”导入Vuex
从“/state”导入状态
从“/getter”导入getter
从“/突变”导入突变
从“/actions”导入操作
从“./admin/store.js”导入moduleAdmin
从“./user/store.js”导入moduleUser
Vue.use(Vuex)
导出默认的新Vuex.Store({
获得者,
突变,
国家,,
行动,
模块:{
管理员:moduleAdmin,
用户:moduleUser,
},
严格:process.env.NODE_env!=“生产”
})
~/store/admin/store.js

从“./state.js”导入状态
从“./getters.js”导入getter
从“/actions.js”导入操作
从“./translations.js”导入突变
导出默认值{
名称空间:对,
州:州,,
吸气剂:吸气剂,
行动:行动,
突变:突变,
}
然后根据需要访问:

返回此。$store.state.someVariable;
返回此。$store.state.admin.someVariable;
返回此。$store.state.user.someVariable;

Vuex允许您将存储区分成模块。看看这篇文章,它可能对您的用例有所帮助。这个问题可能需要一些澄清。在生产模式下部署应用程序时,用户无法进入Devtools并浏览Vuex存储。只有在视图中包含该信息的情况下,才会有人看到存储中的内容,在这种情况下,该信息应该被锁定在身份验证之后。那么你能澄清一下安全问题到底在哪里吗?