鉴权
前后端交互不得不考虑的一个问题就是登录认证,如何鉴权。在学习koa的过程中,搭建的 koa
项目中使用 koa-jwt
这个包进行鉴权。下面来了解一下jwt的具体概念:
JWT
JWT 官方介绍网站是这么定义的:
Json Web Token (JWT) 是一种开放标准 (RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为 JSON 对象。此信息可以进行验证和信任,因为它是经过数字签名的。可以使用密钥(使用 HMAC 算法)或使用 RSA 或 ECDSA 对公钥/私钥对对 JWT 进行签名。
可以认为JWT是用户认证的一种协议,可以理解为服务端颁发给客户端的一张身份证,拿到身份证后此后客户端进行接口访问时携带身份证,服务端通过验证以允许客户端访问服务器资源,每一项的含义:
- Json表示令牌的原始值是一个Json格式的数据
- web表示是在互联网传播
- token表示令牌
Bearer Token
经过一系列加密和签名算法之后,JWT变成了这样的结构的一个具有有效期的字符串(Token),它是前后台信任通信的凭证.
这个字符串。你可以把它放在Cookie里面自动发送,但是这样不能跨域,所以更好的做法是放在HTTP请求的头信息Authorization字段里面。
Authorization: Bearer
如何在 postman 中测试带 token 的接口?
在 postman 中测试带 token 的接口,首先需要进行登录,复制登录接口返回的 token ,在 postman 客户端中点击 Authorization 标签,Type 选择 Bearer Token,然后将复制的Token 黏贴到右侧的输入框中。
实际开发中前端如何设置请求携带token?
登录成功后我们将 token 保存到 localsorage 中,之后在每次的请求接口中设置其携带 token。
通过查看postman的日志,token 在请求头中的格式如下:
由此在axios的拦截器中添加如下代码:(注意Bearer后面的空格)
ini
复制代码axios.interceptors.request.use(config => { const token = localStorage.getItem('token'); config.headers.common['Authorization'] = 'Bearer ' + token; return config; })
资源:
集成了 koa+mongodb+vue3+vite2 的模板项目:
包含完整的登录注册,以及用户鉴权。集成axios,vue-router4.0, ant-design-vue2.0,数据库使用mongodb。
参考文章: