ant-design-pro 中怎么统一处理接口返回的会话失效

发布于 2022-09-07 16:51:24 字数 961 浏览 21 评论 0

model里有许多接口都是要登陆后才能调用的,code返回200是正常,
返回20020时是会话失效了,这时我想跳重新转到登录页面,我是这样处理的

    *fetchShopSaleList({ payload }, { call, put }) {
      let res = yield call(qryShopSaleGroup, payload);
      if(res.code === 200) {
        yield put({
          type: 'save',
          payload: {
            shopCardList: res.data,
          },
        });
      } else if (res.code === 20020) {
        yield put(routerRedux.push('/user/cloudlogin'));
      }
    },

    *fetchShopSaleInfo({ payload }, { call, put }) {
      let res = yield call(qryShopSaleGroup, payload);
      if(res.code === 200) {
        yield put({
          type: 'save',
          payload: {
            shopSaleInfoList: res.data,
          },
        });
      } else if (res.code === 20020) {
        yield put(routerRedux.push('/user/cloudlogin'));
      }
    },

在每个方法里判断下返回的code是否等于20020,如果等于就跳转到登录页面。
我这样每个接口下都要写多这么一个判断,感觉不怎么好。

请问有没什么办法能统一处理?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

星軌x 2022-09-14 16:51:24

antd-pro中,src/utils/request.js文件里 request方法中可以统一做处理,不用在model添加额外代码

import { extend } from 'umi-request';

...

/**
 * 配置request请求时的默认参数
 */
const request = extend({
  errorHandler, // 默认错误处理
  credentials: 'include', // 默认请求是否带上cookie
});

/**
* 对于状态码实际是 200 的错误
*/
request.interceptors.response.use(async (response) => {
  const data = await response.clone().json();
  if(data && data.NOT_LOGIN) {
    location.href = '登录url';
  }
  return response;
})

export default request;

具体文档可查看 umi-request

朦胧时间 2022-09-14 16:51:24

antd-pro中,在src/utils/request.js文件里面的request方法中可以统一做处理。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文