首页 > vuex如何实现跨页面状态维护?

vuex如何实现跨页面状态维护?

最近使用vue vue-router vuex
构建一个spa网站。
遇到如下问题,

当login.vue页面登录成功后,切到其它业务逻辑页面,这个登录状态如何通过vuex维护。

也就是切换/访问 需要登录才能浏览或操作的页面。

vuex要如何配置或实现哪些代码。

注:之前有其它vuejs使用者通过vue-resource 的vue.http.header来拦截实现这个功能,用了token方式。

而我是用websocket通讯方式,不打算用vue-resource了。

最好能附上github例子。xiexie.

引用文字


说实话并没有很get到你需要vuex去控制login状态的点。
一般来说,验证都是在要请求后端的时候拿到401,然后将用户弹到登录页面去,如果不涉及到动态数据,前端的所有数据应该对用户而言都是开放的。
我猜测你的意思应该是只用户刷新页面了,这时候如果登录状态只是控制在内存里的话,刷新之后登录的状态也就消失了。
如果是为了控制这个登录状态的话,我的做法是把登录以后的token存在sessionStorage里面,然后在vuex的middleware里面加一段话,仅作参考,github地址

import createLogger from 'vuex/logger'

const myMiddleware = {
  onInit(state, store) {
    // record initial state
    // check user login status
    let userName = sessionStorage.getItem('userName')
    if (!!userName) {
      // 像普通login以后你设置状态一样,用同一个函数去设置该设的状态
      afterLogin(store.dispatch, userName)
    }
  },
  onMutation(mutation, state, store) {
    // called after every mutation.
    // The mutation comes in the format of { type, payload }
  }
}

export default process.env.NODE_ENV !== 'production' ? [createLogger(), myMiddleware] : [myMiddleware]
【热门文章】
【热门文章】