前端发送token到后端,一般有三种方式:

  1. 链接中携带token,query参数
  2. post这种请求body中携带token
  3. 头信息携带token

但是事实上http已经为我们提供了传token的方式,是一个相对来说比较安全的方式,就是HttpBearerAuth

其实他也是一个头信息来着,只是相对来说多了一点操作,在apipost软件中,我们可以直接可视化设置

如果是axios,则是需要添加一个头信息:

axios({
    method: 'get',
    url: url,
    responseType: 'blob',
    headers: {
        'Authorization': 'Bearer ' + getToken()
    }
}).then(res => {
    console.log(res)
})

Authorization为key,值的话,开头要加上Bearer ,并且带有一个空格,这个空格是必须的。

然后我们koa的api中则需要获取到这个值,一般来说,自己写个方法就行了:

paresBearerToken.js:

//获取头信息中authorization的token
module.exports = function paresBearerToken(header) {
  if (header && header.authorization) {
    const authorization = header.authorization.split(" ");
    if (authorization.length === 2 &&
      /^Bearer$/i.test(authorization[0])) {
      return authorization[1];
    } else {
      return null;
    }
  };
  return null;
};

调用的时候:

const parseBearerToken = require("@utils/paresBearerToken");


//获取头信息中的token
const token = parseBearerToken(ctx.header);

这样就行了。

分类: Node 标签: nodekoaaxiostokenHttpBearerAuth

评论

全部评论 2

  1. 阿俊
    阿俊
    Google Chrome Windows 10
    大佬你好,可以把你学习这个koa2 封装好的例子给我嘛,谢谢
    1. 木灵鱼儿
      木灵鱼儿
      FireFox Windows 10
      @阿俊没有了,koa学起来很迷茫的,建议转战nest框架

目录