每个人。我正在尝试构建一个登录模块。我正在使用Nuxt auth处理我的登录工作流程,并为我的RestAPI使用flask。我已经按照docs的规定在nuxt.config.js
中设置了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>
现在,我遇到的问题是,当我点击登录按钮以调用“提交表单”并调用我的登录功能时,对登录路径的调用成功,请求包含该表单中的用户名和密码,我得到了回应。如图所示:
但是,由于请求主体为空,因此用户端点的调用失败,因此服务器无法处理该请求,如下图所示: Empty request body in call to user endpoint.
我想我的问题是我是否存在某种错误配置,导致用户端点的请求正文为空,从而导致我的用户用不了多久并保持this.$auth.loggedIn
和this.$auth.user
为假
我已经尝试的东西:
propertyName
设置为false
切入点。 As mentioned here。仍然会遇到同样的问题。this.$auth.fetchUser()
之后,我尝试从组件的登录功能中使用let response = await this.$auth.loginWith('local', { data: this.login })
方法。 As recommended in this answer r。仍然会遇到同样的问题。 任何建议或帮助将不胜感激。
答案 0 :(得分:0)
请设置获取请求nuxt.config以及api端点。谢谢
user: { url: '/users/username/', method: 'get', propertyName: 'User' }'
答案 1 :(得分:0)
根据登录端点,身份验证必须接收'token'
propertyName,但是在您收到'auth'
属性作为响应的响应屏幕快照中显示的内容,您应该更改后端以直接返回令牌属性(而不是嵌套属性)或更改登录端点propertyName
,可以通过调用
console.log( this.$auth.getToken('local') );