使用 @nuxtjs/auth 捕获错误服务器响应

7 vuejs2 nuxt.js

我正在尝试捕获 @nuxtjs/auth 的错误响应,但它似乎除了未定义之外没有返回任何内容。

如果我包含用户,它会拒绝登录,所以我想知道为什么它返回未定义。

配置:

auth: {
    strategies: {
        local: {
            endpoints: {
                login: {
                    url: 'http://127.0.0.1:80/api/login',
                    method: 'post',
                    propertyName: 'token'
                },
                logout: false,
                user: {
                    url: 'http://127.0.0.1:80/api/me',
                    method: 'get',
                    propertyName: undefined
                }
            },
            tokenRequired: true,
            tokenType: 'bearer',
        }
    },
    plugins: [
        '@/plugins/auth.js'
    ]
},
Run Code Online (Sandbox Code Playgroud)

插入:

export default function ({ app }) {
    app.$auth.onError((error, name, endpoint) => {
        console.error(name, error)
    });
}
Run Code Online (Sandbox Code Playgroud)

查看功能:-handleSuccess 和handleFailure 都返回未定义。

login() {
    this.toggleProcessing(0);

    let payload = {
        username: 'admin',
        password: 'admin123'
    }

    let handleSuccess = response => {
        console.log(response);
        this.toggleProcessing(0);
    }

    let handleFailure = error => {
        console.log(error);
        this.toggleProcessing(0);
    }

    this.$auth.loginWith('local', { data: payload }).then(handleSuccess).catch(handleFailure);
},
Run Code Online (Sandbox Code Playgroud)

Rob*_*ari 7

您可以使用e.response

async login() {
    try {
      const login = {
        username: this.username,
        password: this.password
      }
      let response = await this.$auth.loginWith('local', { data: login })
      console.log('response', response)
    } catch (e) {
      console.log('Error Response', e.response)
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 0

我最初不确定这里可能出了什么问题,因为我看不到完整的nuxt.config.js组件,但这里有一些需要检查的事情:

  • @nuxtjs/axios已安装
  • axios和模块均在以下部分auth中注册: modulesnuxt.config.jsmodules: [ '@nuxtjs/axios', '@nuxtjs/auth' ]
  • 另外,请确保在组件/页面组件中设置middleware属性。auth

确保您遵循此页面上的文档:https://auth.nuxtjs.org/getting-starterd/setup