登录后无法立即获取用户,但刷新工作@nuxt-auth
Posted
技术标签:
【中文标题】登录后无法立即获取用户,但刷新工作@nuxt-auth【英文标题】:Can't fetch user right after login, but refresh works @nuxt-auth 【发布时间】:2021-09-26 17:46:09 【问题描述】:登录成功,但在刷新页面之前无法获取用户信息。
// 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 响应如下:
/api/user response (image)
我现在缺少什么?
【问题讨论】:
也许可以试试setUser
,如下所示:***.com/a/68081536/8816585
@kissu 我不知道为什么,但 setUser 似乎对我不起作用。我做了与你链接的答案完全相同的事情,甚至检查了 vue 扩展是否设置了电子邮件信息但是......是的......
您确定您的凭据没问题吗?
@kissu 是的,我只是仔细检查了一遍
【参考方案1】:
从 nuxt 配置中删除 cookie 选项解决了所有问题。似乎 laravel 和 nuxt 将 cookie 放在同名并导致冲突。
我还是不明白为什么auth在登录后无法立即获取用户,而是需要刷新页面。
【讨论】:
【参考方案2】: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: '/'
,
,
【讨论】:
不起作用,登录后仍然不获取用户。我无法理解这个问题,如果用户 api 无法访问,它不应该在刷新后获取用户...... 当它接收到数据但没有将其存储在您的$auth.user
中时,这意味着该属性与返回的数据不匹配并且端点是可以的。如果端点有问题,它根本不会像你提到的那样获取,所以据我所知,它很可能与该属性有关。
你在使用vuex-persist
吗?以上是关于登录后无法立即获取用户,但刷新工作@nuxt-auth的主要内容,如果未能解决你的问题,请参考以下文章
带有 Spotify 的 OAuth 无法使用 curl 获取刷新令牌
Firebase Datasnapshot Observable 在通过重定向登录后不会立即更新