JWT & Bearer Token 傻傻分不清楚

698次阅读
没有评论

鉴权

前后端交互不得不考虑的一个问题就是登录认证,如何鉴权。在学习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 黏贴到右侧的输入框中。

JWT & Bearer Token 傻傻分不清楚

实际开发中前端如何设置请求携带token?

登录成功后我们将 token 保存到 localsorage 中,之后在每次的请求接口中设置其携带 token。

通过查看postman的日志,token 在请求头中的格式如下:

JWT & Bearer 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。

项目地址:gitee.com/youngniu/de…

参考文章:

官方文档

阮一峰的 Koa 框架教程

官方给出的例子

前后端分离 Vue + NodeJS(Koa) + MongoDB,从产品到开发,全栈实践

适合初学者的koa2+mongodb初体验

koa2 + jwt + mongodb入门实战

Node.js 应用:Koa2 使用 JWT 进行鉴权

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)