我想从 "插件 "下定义的js中访问上下文中的$auth对象,但我做不到。
https:/auth.nuxtjs.orgapiauth.html#auth
这个模块全局注入$auth实例,意味着你可以在任何地方使用this.$auth访问它。对于插件、asyncData、fetch、nuxtServerInit和Middleware,你可以从context.$auth访问它。
上面有描述,但是我的代码(axios-interceptor.js)不能从context中访问$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'
]
},
我想在上下文中访问$auth的原因是什么?axios-interceptor.js
是我想在我的应用程序中执行$auth.logout()。if ([401, 403].includes(code)) {
块,并删除token.我想从 "插件 "下定义的js中访问上下文中的$auth对象,但我不能。
现在我可以通过以下操作来访问$auth了
export default {
// plugins: [
// '@/plugins/axios-interceptor.js' ########### REMOVE ###########
// ],
:
(Ommit)
:
auth: {
:
(Ommit)
:
plugins: [
'@/plugins/axios-interceptor.js' // ########### ADD ###########
]
},
(Ommit)
:
}
我需要做的事情列举如下。https:/auth.nuxtjs.orgrecipesextend.html。