每个人。我正在尝试构建一个登录模块。我正在使用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 body和Request response
但是,由于请求主体为空,因此用户端点的调用失败,因此服务器无法处理该请求,如下图所示: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 answerr。仍然会遇到同样的问题。 任何建议或帮助将不胜感激。
请设置获取请求nuxt.config以及api端点。谢谢
user: { url: '/users/username/', method: 'get', propertyName: 'User' }'
根据登录端点,身份验证必须接收'token'
propertyName,但是在您收到的'auth'
属性作为响应的响应屏幕快照中显示的内容,您应该更改后端以直接返回令牌属性(而不是嵌套属性)或更改登录端点propertyName
,您可以通过调用检查令牌设置是否正确
console.log( this.$auth.getToken('local') );