记录后端 Nestjs BasicAuth 认证实现

98 阅读1分钟

前言: 在开发后端接口中, 拿一个外部接口, 需要经过后端处理后, 在转发到内部 API 中, 而这接口刚好用了BasicAuth 认证, 以下就简单的实现一下.

image.png

如图1, 在浏览器直接打开, 会有一个弹窗提示输入用户名和密码, 输入之后就可以拿到接口响应数据.

image.png

如图2, 可以在接口调试中直接输入用户名和密码取得响应数据

那么在代码中要怎么实现了, 关键是要把用户名和密码按规定的格式进行 base64, 然后放在 headers 的 Authorization 中.

上代码.

        const username = 'user'
        const password = 'xxx'
        // 关键在这个格式.要进行 base64
        const authHeader = 'Basic ' + Buffer.from(`${username}:${password}`).toString('base64');
        Logger.debug('authHeader: ', authHeader)
        const url = 'https://www.test.com';
        const config = {
            method: 'GET',
            headers: {
                Authorization: authHeader
            },
            // params: getParam
        };
        try {
            const response = await fetch(url, config);
            if (!response.ok) {
              throw new Error('Network response was not ok');
            }
            const data = await response.json();
            return data;
          } catch (error) {
            console.error('Error fetching data:', error);
          }