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

Cypress API登录后无法重定向至首页问题求助

问题排查与修复方案

1. 修正拼写错误

你的代码中存在变量拼写错误:

const exp = response.body.data.ext;

接口返回的字段是exp,这里误写为ext,导致localStorage.setItem('exp', exp)存入的是undefined。前端路由守卫可能因exp无效判定token过期,触发登录页重定向。

修改为:

const exp = response.body.data.exp;

2. 调整localStorage操作方式

直接调用window.localStorage可能存在上下文问题,Cypress中推荐通过cy.window()获取当前页面的window对象后再操作:

cy.window().then(win => {
  win.localStorage.setItem('jwt', jwt);
  win.localStorage.setItem('refreshToken', refreshToken);
  win.localStorage.setItem('exp', exp);
});

3. 移除多余的前置页面访问

beforeEach中的cy.visit('/home')属于冗余操作,会在测试用例执行前强制跳转至/home,干扰后续路由逻辑,直接删除该行即可。

4. 简化测试用例的访问逻辑

前端页面的路由校验通常读取localStorage中的token,而非请求头。测试用例无需在cy.visit中添加Authorization头,直接访问目标页面:

it('Visit /users page with valid authentication', () => {
  cy.visit('/users/');
  cy.url().should('contain', '/users');
});

完整修正后的代码

beforeEach钩子

beforeEach(() => {
  cy.request({
    method: 'POST',
    url: 'https://some-page/api/v1/auth/login',
    body: {
      email: 'some-email@mail.com',
      password: 'password'
    }
  }).then((response) => {
    const jwt = response.body.data.jwt;
    const refreshToken = response.body.data.refreshToken;
    const exp = response.body.data.exp; // 修正拼写
    cy.wrap(jwt).as('authToken');
    Cypress.env('AUTH_TOKEN', jwt);
    
    // 正确操作localStorage
    cy.window().then(win => {
      win.localStorage.setItem('jwt', jwt);
      win.localStorage.setItem('refreshToken', refreshToken);
      win.localStorage.setItem('exp', exp);
    });
  });
})

测试用例

it('Visit /users page with valid authentication', () => {
  cy.visit('/users/');
  cy.url().should('contain', '/users');
});

额外排查点

若修改后问题仍存在,可检查:

  • 前端路由守卫是否有其他校验逻辑(比如是否需要存入iat字段到localStorage)
  • 登录接口返回的jwt是否未过期,可在then中打印response.body验证所有字段值
  • 测试环境是否与前端认证逻辑匹配(比如是否有其他cookie或session需要设置)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:00:17