繁体   English   中英

[Nuxt.JS]在插件js的上下文中访问$auth object

[英][Nuxt.JS]access the $auth object in the context from plugin js

我想在'plugins/'下定义的js的上下文中访问$ auth object,但我不能。


https://auth.nuxtjs.org/api/auth.html#auth

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


如上所述,但我的代码(axios-interceptor.js)无法从上下文访问 $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'
    ]
  },

我想在axios-interceptor.js中访问 $auth 的原因是我想在if ([401, 403].includes(code)) {块中执行 $auth.logout() 并删除令牌。

我现在可以通过执行以下操作访问 $auth

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

下面列出了我需要做的事情。
https://auth.nuxtjs.org/recipes/extend.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM