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

如何解决Nuxt auth模块首次登录报错400时自动重定向到首页的问题

问题根因

该异常是@nuxtjs/auth-next模块的默认重定向逻辑导致的:默认调用loginWith方法时,无论登录成功还是失败,模块都会自动触发重定向操作。首次刷新应用后auth模块的状态缓存未初始化,登录失败时会触发默认的首页跳转规则;第二次操作时auth模块的状态已经完成缓存,默认重定向规则不会被触发,因此表现正常。

修复方案

1. 禁用登录接口的默认重定向,手动接管跳转逻辑

修改登录组件的loginAuth方法,调用loginWith时传入redirect: false参数,完全屏蔽默认重定向,登录成功后手动跳转到目标页面:

async loginAuth(e) {
  // 先触发表单校验,避免无效提交
  this.$v.$touch()
  if (this.$v.$invalid) return
  this.errors = []
  try {
    await this.$auth.loginWith('local', { 
      data: this.login,
      redirect: false // 核心修改:阻止默认重定向
    })
    // 登录成功后手动跳转到你需要的页面,比如用户中心、首页等
    this.$router.push('/account/dashboard')
  } catch (err) {
    // 捕获错误展示提示
    this.errors = err?.response?.data?.errors || ['邮箱或密码错误,请重试']
    console.log(err.response)
  }
}

2. 清理重复提交逻辑

你的代码中同时在form表单绑定了@submit.prevent="loginAuth",又在提交按钮上绑定了@click.prevent="loginAuth",会导致一次提交触发两次登录请求,删除按钮上的click绑定即可:

<button
  type="submit"
  class="ps-btn ps-btn--fullwidth mt-2"
>
  Loginnnnn
</button>

(可选)全局配置重定向规则

如果需要统一修改所有auth相关的重定向行为,可在nuxt.config.js的auth配置中添加redirect节点覆盖默认规则:

auth: {
  redirect: {
    login: '/account/login', // 未登录时访问授权页跳转的登录地址
    logout: '/account/login', // 登出后跳转地址
    home: '/', // 登录成功默认跳转地址
    callback: false // 本地登录策略无需回调跳转,直接禁用
  },
  // 保留你原有其他auth配置
  strategies: {
    local: {
      // 原有配置不变
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:30:04