登录成功,但在我刷新页面之前无法获取用户信息。
// Login Component
try {
await this.$auth.loginWith("mg_login", {
data: this.user,
});
} catch (e) {
this.$toast.error("Error!", { duration: 1500 });
}
// Nuxt config
auth: {
strategies: {
'mg_login': {
provider: 'laravel/sanctum',
url: `http://localhost`,
maxAge: 60 * 60 * 120,
endpoints: {
user: {
url: '/api/user',
method: 'GET',
propertyName: false
},
login: {
url: '/login',
method: 'POST'
},
csrf: {
url: '/sanctum/csrf-cookie',
method: 'GET'
},
},
cookie: {
name: 'mg_session',
options: {
path: '/',
sameSite: 'none',
maxAge: 60 * 60 * 120,
}
},
},
},
redirect: {
home: '/'
},
},之后,我尝试在登录组件中使用$auth.setUser( user )或$auth.setUser({user})以及nuxt.config中的property/propertyName:‘'/undefined/false选项手动设置用户信息,仍然没有希望。
基本上,如果我不刷新页面,就不能获取用户(或设置用户)。下面是http://localhost/api/user响应:
我现在错过了什么?
发布于 2021-07-20 00:48:05
从nuxt配置中删除cookie选项解决了所有问题。看起来像是laravel和nuxt把cookie放在同一个名字上造成了冲突。
我仍然不明白为什么auth不能在登录后立即获取用户,而需要刷新页面。
发布于 2021-07-19 14:08:55
propertyName适用于旧版本的Auth/Nuxt,请使用如下所示的property:
auth: {
strategies: {
'mg_login': {
provider: 'laravel/sanctum',
url: `http://localhost`,
maxAge: 60 * 60 * 120,
user: {
property: false,
},
endpoints: {
user: {
url: '/api/user',
method: 'GET'
},
login: {
url: '/login',
method: 'POST'
},
csrf: {
url: '/sanctum/csrf-cookie',
method: 'GET'
},
},
cookie: {
name: 'mg_session',
options: {
path: '/',
sameSite: 'none',
maxAge: 60 * 60 * 120,
}
},
},
},
redirect: {
home: '/'
},
},https://stackoverflow.com/questions/68434110
复制相似问题