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

Nuxt.js对接WordPress REST API登录成功后无法跳转及鉴权存储异常

问题背景

为无头WordPress项目搭建登录界面,前端采用Nuxt.js框架,后端使用WordPress搭配JWT Auth插件实现令牌认证功能。
当前登录接口可正常请求,能够成功获取预期的登录返回数据,但登录成功后的重定向逻辑未生效,同时认证数据也未存储到Nuxt.js的$auth API中。
相关参考信息:

  • 登录页截图:带控制台日志的登录页截图
  • 原有问题配置:
auth: {
    strategies: {
      local: {
        endpoints: {
          login: {
            url: 'https://clientsite.test/wp-json/jwt-auth/v1/token',
            method: 'post',
            propertyName: 'token'
          },
          user: {
            url: 'https://clientsite.test/wp-json/wp/v2/users/me/',
            method: 'post',
            propertyName: false
          },
        },
        tokenRequired: true,
        tokenType: 'JWT',
        globalToken: true,
        redirect: {
          login: '/login',
          home: '/home',
          logout: '/logout'
        }
      },
    },
  },
故障原因

配置存在3处核心错误,直接导致认证流程中断:

  • redirect配置层级错误:该配置属于Nuxt Auth模块的根级配置项,写在strategies.local内部时模块无法读取,自然不会触发登录后重定向。
  • 用户信息接口请求方法错误:WordPress REST API的/wp/v2/users/me接口仅支持GET请求,配置为post时登录后拉取用户信息的请求会失败,整个认证流程终止,token不会写入$auth存储。
  • Token类型配置不匹配:JWT Auth插件默认返回的token鉴权类型为Bearer,配置为JWT会导致后续接口请求携带的Authorization头格式错误,鉴权失败。
  • 额外排查点:如果登录逻辑是自行封装axios请求登录接口,而非调用$auth内置的登录方法,也不会触发模块内置的token存储、用户拉取、重定向流程。
修复方案
  1. 调整auth配置结构,修正错误项,参考正确配置如下:
auth: {
  // 将重定向配置移至auth根级
  redirect: {
    login: '/login',
    home: '/home',
    logout: '/logout'
  },
  strategies: {
    local: {
      endpoints: {
        login: {
          url: 'https://clientsite.test/wp-json/jwt-auth/v1/token',
          method: 'post',
          propertyName: 'token'
        },
        user: {
          // 修正请求方法为GET
          url: 'https://clientsite.test/wp-json/wp/v2/users/me/',
          method: 'get',
          propertyName: false
        },
        logout: false
      },
      tokenRequired: true,
      // 修正token类型为Bearer,和插件返回格式匹配
      tokenType: 'Bearer',
      globalToken: true
    },
  },
},
  1. 修正登录页提交逻辑,使用$auth内置的登录方法发起请求,不要自行封装请求调用登录接口,示例代码:
async handleLoginSubmit() {
  try {
    // 调用auth模块内置的local策略登录方法
    await this.$auth.loginWith('local', {
      data: {
        username: this.loginForm.username,
        password: this.loginForm.password
      }
    })
    // 无需手动写跳转逻辑,登录成功后模块会自动跳转至配置的home页
  } catch (error) {
    // 自行处理用户名密码错误等异常场景
    console.error('登录失败:', error)
  }
}
  1. 配置修改完成后重启Nuxt开发服务,清除浏览器本地缓存后再测试:登录成功后可通过控制台执行$nuxt.$auth.loggedIn验证状态,返回true即代表认证信息存储正常,页面会自动完成跳转。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:15:54