简介:
jwt的全称是json-web-token,是一种前后端登录认证的方案。区别于之前学的cookie,session。
jwt认证机制
当用户在前端登陆时,会把账号密码等信息传递到后端,后端拿到数据后会对数据库进行校验。校验成功后,签发token,传到前端js中。js拿到数据后会把数据保存到cookie中,当用户再次发送请求,前端js会从cookie中取出token,发送Ajax请求放到请求头中,进入需要登陆才能访问的接口中(请求头里面带token)。然后APIView的认证类会从请求头中取出token,验证token是否合法,如果合法,就进入视图类中。不合法就返回错误。这样做的好处就是不需要通过数据库来判断,提高了性能。
token是经典的三段式,以 . 分割,每一段都使用快base64的编码格式。
- 第一段:头
-
- 一般放公司信息,加密方式(一般都是固定的)
- 第二段:荷载
-
- 一般放登陆的用户信息(签发时间,过期时间,用户名等)
- 第三段:签名(signature)二进制数据
-
- 签发阶段:通过头和荷载,用某种加密方式得到的
- 校验阶段:拿到token,取出一二段,通过与之前同样的加密方式获得新签名,将它与旧签名对比。
base64
base64是一种编码格式(并非加密),一般用于传输图片、字符串等。也用于jwt的使用。base64的长度一定是4的倍数,如果不是用‘=’补齐。