Javascript Nuxt auth模块未将loggedin用户设置为存储状态
我目前正在Nuxt Auth模块的帮助下开发身份验证功能 在前端我运行Nuxt Js,在后端我运行Laravel 5.7 在nuxt.config.js中,我设置了身份验证设置:Javascript Nuxt auth模块未将loggedin用户设置为存储状态,javascript,authentication,vue.js,vuex,nuxt.js,Javascript,Authentication,Vue.js,Vuex,Nuxt.js,我目前正在Nuxt Auth模块的帮助下开发身份验证功能 在前端我运行Nuxt Js,在后端我运行Laravel 5.7 在nuxt.config.js中,我设置了身份验证设置: auth: { strategies: { local: { endpoints: { login: { url: 'login', method: 'post', propertyName: 'access_token' },
auth: {
strategies: {
local: {
endpoints: {
login: { url: 'login', method: 'post', propertyName: 'access_token' },
logout: { url: 'logout', method: 'post' },
user: { url: 'user', method: 'get', propertyName: 'user' },
}
},
tokenRequired: true,
tokenType: 'bearer',
}
},
在my index.vue中,我有一个带有登录方法的表单:
<template>
<div>
<div>
<b-container>
<b-row no-gutters>
<b-col col lg="12">
</b-col>
</b-row>
<b-row no-gutters>
<b-col col lg="12">
<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm" label-position="top">
<el-form-item label="Email" prop="email">
<el-input v-model="ruleForm.email" ></el-input>
</el-form-item>
<el-form-item label="Password" prop="password">
<el-input type="password" v-model="ruleForm.password" autocomplete="off"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="login">Inloggen</el-button>
<!--<el-button @click="resetForm('ruleForm2')">Reset</el-button>-->
</el-form-item>
</el-form>
</b-col>
</b-row>
</b-container>
</div>
</div>
</template>
<script>
export default {
layout: 'login',
data() {
var validatePass = (rule, value, callback) => {
if (value === '') {
callback(new Error('Vul een wachtwoord in'));
} else {
callback();
}
};
return {
ruleForm: {
email: '',
password: '',
},
rules: {
password: [
{ validator: validatePass, trigger: 'blur' }
],
email: [
{ required: true, message: 'Vul een email in', trigger: 'blur' },
{ type: 'email', message: 'Vul een correct email adres in', trigger: ['blur'] }
]
}
};
},
methods: {
async login() {
try {
await this.$auth.loginWith('local', {
data: {
username: this.ruleForm.email,
password: this.ruleForm.password
}
}).then(() => {
this.$router.push({ name: 'dashboard'})
})
} catch (e) {
console.log(e)
}
},
}
}
</script>
因洛根
导出默认值{
布局:“登录”,
数据(){
var validatePass=(规则、值、回调)=>{
如果(值==''){
回调(新错误('Vul een wachtwoord in');
}否则{
回调();
}
};
返回{
规则格式:{
电子邮件:“”,
密码:“”,
},
规则:{
密码:[
{validator:validatePass,触发器:'blur'}
],
电邮:[
{必需:true,消息:'Vul een email in',触发器:'blur'},
{键入:'email',消息:'Vul een correct email adders in',触发器:['blur']}
]
}
};
},
方法:{
异步登录(){
试一试{
等待此消息。$auth.loginWith('local'{
数据:{
用户名:this.ruleForm.email,
密码:this.ruleForm.password
}
}).然后(()=>{
这是.$router.push({name:'dashboard'})
})
}捕获(e){
控制台日志(e)
}
},
}
}
当我尝试登录时,正在调用异步函数“login”。返回与用户名和密码对应的用户。
我唯一的问题是,当我查看vuex状态时,auth.loggedIn保持为false,auth.user保持未定义
我以为Nuxt Auth会自动更新状态,还是我遗漏了什么
任何帮助都将不胜感激:我终于找到了解决办法。我必须将用户端点的propertyname设置为false 旧版本
endpoints: {
login: { url: 'login', method: 'post', propertyName: 'access_token' },
logout: { url: 'logout', method: 'post' },
user: { url: 'user', method: 'get', propertyName: 'user' },
}
新版本
endpoints: {
login: { url: 'login', method: 'post', propertyName: 'access_token' },
logout: { url: 'logout', method: 'post' },
user: { url: 'user', method: 'get', propertyName: false },
}
现在用户被加载到状态Hi,我也在尝试解决这个问题,我已经将propertyName设置为false,但是我不太清楚它是如何连接到api的。你知道吗?两天来都有同样的问题。使用版本4.9.1。你的解决方案刚刚解决了问题。这两种选择对我都不起作用。它对我来说工作正常,但突然停止了工作。你发送过来的JSON对象看起来像是我遇到了类似的问题,但我不确定这是否是由于我从服务器发送的内容造成的