首页 > 解决方案 > How to set axios token for client side in nuxt server init?

问题描述

I'm trying to authenticate my user when the page is loading. So I have the following code :

actions: {
      nuxtServerInit ({dispatch, commit, app}, context) {
        return new Promise((resolve, reject) => {
          const cookies = cparse.parse(context.req.headers.cookie || '')
          if (cookies.hasOwnProperty('x-access-token')) {
            app.$axios.setToken(cookies['x-access-token'], 'Bearer')
            api.auth.me2()
              .then(result => {
                commit('setUser', result.data.user)
                resolve(true)
              })
              .catch(error => {
                commit('resetUser')
                resetAuthToken()
                resolve(false)
              })
          } else {
            resetAuthToken()
            resolve(false)
          }
        })
      }

However I have the following error : Cannot read $axios property of undefined. What is wrong with my code ?

标签: axiosnuxt.js

解决方案


另一种方式。你可以传入app第二个参数,这样

nuxtServerInit ({dispatch, commit}, {app}) {

完整代码:

actions: {
  nuxtServerInit ({dispatch, commit}, {app}) {
    return new Promise((resolve, reject) => {
      const cookies = cparse.parse(context.req.headers.cookie || '')
      if (cookies.hasOwnProperty('x-access-token')) {
        app.$axios.setToken(cookies['x-access-token'], 'Bearer')
        api.auth.me2()
          .then(result => {
            commit('setUser', result.data.user)
            resolve(true)
          })
          .catch(error => {
            commit('resetUser')
            resetAuthToken()
            resolve(false)
          })
      } else {
        resetAuthToken()
        resolve(false)
      }
    })
  }
}

推荐阅读