Nuxt Auth中间件向用户端点发出空请求

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

每个人。我正在尝试构建一个登录模块。我正在使用Nuxt auth处理我的登录工作流程,并为我的RestAPI使用flask。我已经在nuxt.config.js中设置了docs中的auth选项,并根据我的flask API调整了网址,如下所示:

auth: {
    strategies: {
      local: {
        endpoints: {
          login: { url: '/auth/', method: 'post', propertyName: 'token' },
          logout: { url: '/auth/logout', method: 'post' },
          user: { url: '/users/username/', method: 'post', propertyName: 'User' }
        },
        // tokenRequired: true,
        // tokenType: 'bearer'
        // autoFetchUser: true
      }
    }
  }

这是我的登录组件:

<template>
  <div>
    <form @submit.prevent="userLogin">
      <div>
        <label>Username</label>
        <input type="text" v-model="login.username" />
      </div>
      <div>
        <label>Password</label>
        <input type="text" v-model="login.password" />
      </div>
      <div>
        <button type="submit">Submit</button>
      </div>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      login: {
        username: 'newUser27',
        password: 'ninjaTurtles1!'
      }
    }
  },
  methods: {
    async userLogin() {
      try {

        let response = await this.$auth.loginWith('local', { data: this.login })

        console.log(response)
      } catch (err) {
        console.log(err)
      }
    }
  }
}
</script>

现在,我遇到的问题是,当我点击登录按钮以调用submit表单并调用我的登录功能时,对登录路径的调用成功,请求包含该表单的用户名和密码,我得到了回应。如图所示:

[Request bodyRequest response

但是,由于请求主体为空,因此用户端点的调用失败,因此服务器无法处理该请求,如下图所示:Empty request body in call to user endpoint.

[我想我的问题是,是否有某种错误配置导致用户端点的请求正文为空,从而使我的用户无法使用很长时间,并且使this.$auth.loggedInthis.$auth.user保持为假。

我到目前为止尝试过的:

  • 我尝试将API中的请求切换为帖子,以查看是否成功如上图所示,任何差异都没有。都获取和发布请求到达API时,其正文为空。
  • 我已经尝试在用户中将propertyName设置为false切入点。 As mentioned here。仍然出现相同的问题。
  • 我尝试从this.$auth.fetchUser()之后的组件中的登录功能使用let response = await this.$auth.loginWith('local', { data: this.login })方法。As recommended in this answerr。仍然会遇到同样的问题。

任何建议或帮助将不胜感激。

vue.js authentication flask vuex nuxt.js
2个回答
0
投票

请设置获取请求nuxt.config以及api端点。谢谢

 user: { url: '/users/username/', method: 'get', propertyName: 'User' }'

0
投票

根据登录端点,身份验证必须接收'token' propertyName,但是在您收到的'auth'属性作为响应的响应屏幕快照中显示的内容,您应该更改后端以直接返回令牌属性(而不是嵌套属性)或更改登录端点propertyName,您可以通过调用检查令牌设置是否正确

console.log( this.$auth.getToken('local') );
© www.soinside.com 2019 - 2024. All rights reserved.