ant design pro V5 使用 umi request 拦截器为请求 header 加上 jwt token

文章目录

    想使用 umi request 的拦截器为请求统一加上 jwt token,但是参考 ant design pro V5 的文档,始终不生效。

    无效的配置

    如果参考官方的文档 https://beta-pro.ant.design/docs/request-cn,
    修改 src/app.tsx

    import type { RequestConfig, RunTimeLayoutConfig } from 'umi';
    
    export const request: RequestConfig = {
      errorHandler,
      
      // 新增自动添加AccessToken的请求前拦截器
      requestInterceptors: [authHeaderInterceptor],
    };
    

    这个配置根本不会起作用,从浏览器看网络请求头并没有任何变化。关键文档还无耻地宣称:

    等同于 umi-request 的 request.interceptors.request.use()

    解决方法 (正确的配置)

    修改:

    src/services/ant-design-pro/api.ts

    使用 umi-request 替换 umi 的配置。

    //import { request } from 'umi';
    import request from 'umi-request';
    
    // request拦截器, 改变url 或 options.
    request.interceptors.request.use((url, options) => {
      let token = localStorage.getItem('token');
      if (null === token) {
          token = '';
      }
      const authHeader = { Authorization: `Bearer ${token}` };
      return {
        url: url,
        options: { ...options, interceptors: true, headers: authHeader },
      };
    });
    

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式