[Nuxt.JS]从插件js访问上下文中的$auth对象。

问题描述 投票:0回答:1

我想从 "插件 "下定义的js中访问上下文中的$auth对象,但我做不到。


https:/auth.nuxtjs.orgapiauth.html#auth

这个模块全局注入$auth实例,意味着你可以在任何地方使用this.$auth访问它。对于插件、asyncData、fetch、nuxtServerInit和Middleware,你可以从context.$auth访问它。


上面有描述,但是我的代码(axios-interceptor.js)不能从context中访问$auth(它是未定义的)。要怎么才能访问它呢?

插件axios-interceptor.js。

export default function (context) {
  const { $axios, route, redirect } = context

  $axios.interceptors.response.use(
    function (response) {
      return response
    },
    function (error) {
      const code = parseInt(error.response && error.response.status)
      const thisRoutePath = route.path

      if ([401, 403].includes(code)) {
        if (thisRoutePath !== '/') {
          redirect('/?login')
        }
      }
      return Promise.reject(error)
    }
  )
}

nuxt.config.js

export default {
  plugins: [
    '@/plugins/axios-interceptor.js'
  ],

  modules: [
    '@nuxtjs/axios',
    '@nuxtjs/proxy',
    '@nuxtjs/auth'
  ],
  axios: {
    baseURL: BASE_URL
  },
  auth: {
    cookie: false,
    autoFetchUser: false,
    redirect: {
      login: '/login',
      logout: '/login',
      callback: '/callback',
      home: '/home'
    },
    strategies: {
      local: {
        endpoints: {
          login: { url: BACKEND_API_PATH_BASE + '/api/v1/login/', method: 'post', propertyName: 'token' },
          user: { url: BACKEND_API_PATH_BASE + '/api/v1/users/me', method: 'get', propertyName: false },
          logout: false
        },
      },
    }
  },
  router: {
    middleware: [
      'auth'
    ]
  },

我想在上下文中访问$auth的原因是什么?axios-interceptor.js 是我想在我的应用程序中执行$auth.logout()。if ([401, 403].includes(code)) { 块,并删除token.我想从 "插件 "下定义的js中访问上下文中的$auth对象,但我不能。

axios nuxt.js
1个回答
0
投票

现在我可以通过以下操作来访问$auth了

export default {
  // plugins: [
  //   '@/plugins/axios-interceptor.js'  ########### REMOVE ###########
  // ],
    :
  (Ommit)
    :
  auth: {
      :
    (Ommit)
      :
    plugins: [
      '@/plugins/axios-interceptor.js'  // ########### ADD ###########
    ]
  },
  (Ommit)
      :
}

我需要做的事情列举如下。https:/auth.nuxtjs.orgrecipesextend.html。

© www.soinside.com 2019 - 2024. All rights reserved.