You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@nuxt-auth登录成功后无法获取用户信息,刷新页面才可正常获取问题求助

修复方案

  1. 登录后主动触发用户信息拉取
    loginWith 方法执行成功后,部分场景下不会自动触发用户接口请求,你需要在登录成功后手动调用 fetchUser 方法,修改登录组件代码:
// Login Component
try {
  await this.$auth.loginWith("mg_login", {
    data: this.user,
  });
  // 新增这行主动拉取用户信息
  await this.$auth.fetchUser()
} catch (e) {
  this.$toast.error("Error!", { duration: 1500 });
}
  1. 补全Cookie配置项
    你当前配置了 sameSite: 'none',按照浏览器规范,该配置必须搭配 secure: true 才会生效,否则登录后的会话Cookie会被浏览器拦截,导致第一次请求/api/user时无法携带身份凭证,修改nuxt.config的cookie配置:
cookie: {
    name: 'mg_session',
    options: {
        path: '/',
        sameSite: 'none',
        secure: true, // 新增该配置项
        maxAge: 60 * 60 * 120,
    }
},

如果是本地HTTP开发环境,可临时把sameSite改为lax,不需要加secure属性,生产环境再切换为none+secure的组合

  1. 校验Laravel Sanctum配置
    检查Laravel项目的.env文件,确保SANCTUM_STATEFUL_DOMAINS配置项包含你的前端访问地址(本地开发需要带上端口,比如localhost:3000),否则Sanctum会把跨域请求判定为非状态请求,不会返回用户信息。

  2. 手动设置用户的正确写法
    如果需要手动调用setUser,直接传入用户对象即可,不需要嵌套层级,正确写法参考:

// 假设登录接口直接返回用户数据
const { data: user } = await loginRequest(this.user)
await this.$auth.setUser(user)

内容的提问来源于stack exchange,提问作者Lynx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 18:06:03