Vue.js 在vuex状态下保存用户身份验证状态是安全的解决方案吗?

Vue.js 在vuex状态下保存用户身份验证状态是安全的解决方案吗?,vue.js,authentication,vuex,Vue.js,Authentication,Vuex,我观看了spa vue认证的各种视频。所有这些视频都提供了基于vuex的解决方案 像这样,; 他们在getter(如loggedIn)中创建函数,以返回用户身份验证状态 store.js [...] state:{ token: null, user: null }, getters: { loggedIn: (state) => { return state.token && state.user ? true : false

我观看了spa vue认证的各种视频。所有这些视频都提供了基于vuex的解决方案

像这样,; 他们在getter(如loggedIn)中创建函数,以返回用户身份验证状态

store.js

[...]

state:{
    token: null,
    user: null
},
getters: {
    loggedIn: (state) => {
        return state.token && state.user ? true : false
    },
},

[...]
Dashboard.vue(这是受保护的路由)

一切正常,但我可以通过vue dev工具手动更改状态,这样我就可以进入受保护的路由,因此身份验证无法正常工作

我的问题:

  • 用户能否在生产模式下修改vuex状态
  • 在vuex状态下保存用户身份验证状态是安全的解决方案吗
  • 用户能否在生产模式下修改vuex状态

    是的,用户可以对应用程序的状态执行任何操作。您可以混淆某些内容,但不能阻止用户检查或修改应用程序的数据

    在vuex状态下保存用户身份验证状态是安全的解决方案吗

    这是一种方法,我确实推荐它,尤其是当你的应用程序越来越大时,在你的应用程序中管理共享状态会变得更容易。但我不会说它“安全”或“不安全”

    我可以通过vue dev工具手动更改状态,这样我就可以进入受保护的路由,从而使身份验证无法正常工作


    正如您所描述的,应用程序的行为可以很容易地规避。您只能完全控制服务器代码。如果由于用户使用开发工具篡改数据,客户端可以访问受保护的路由,则服务器应拒绝受保护路由所需的任何特权数据请求。

    因此,从用户角度看,任何组件都不能完全隐藏,只能限制从服务器接收的数据。例如,如果我从服务器接收数据并将其显示在仪表板组件中,则未经授权的用户可以看到仪表板组件,但无法看到任何数据,因为数据是从服务器接收的。这是真的吗?是的,这是正确的。您对客户端代码没有安全性,只有服务器代码。
    [...]
    
    beforeRouteEnter (to, from, next) {
        if(store.getters.loggedIn)
            next()
        else
            next({ name:'login' })
    
    }
    
    [...]