[英][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(它是未定义的)。 需要什么才能访问它?
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)
}
)
}
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.