vue与django项目-用户认证1

django的token有几种,考虑到后面可能连接小程序,或者APP
首选jwt

先介绍,不想看请直接下一章

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

用点.分割
哈希256

1 header 进行base64加密;+ _

 {
  'typ': 'JWT',
  'alg': 'HS256'
}

2 playload json 转化字符串 进行base64加密
标准中注册的声明:
iss: jwt签发者
sub: jwt所面向的用户
aud: 接收jwt的一方
exp: jwt的过期时间,这个过期时间必须要大于签发时间
nbf: 定义在什么时间之前,该jwt都是不可用的.
iat: jwt的签发时间
jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.但不建议添加敏感信息,因为该部分在客户端可解密.

私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密的,意味着该部分信息可以归类为明文信息。

{
  "id": "1234567890",
  "name": "zhangsan",
  "exp": 1515656556 # 超时时间
}

3 signature
第一和第二部分拼接起来
开始哈希256加密 + 加盐(随机)
对加密后的再进行base64加密

=》token

再次访问,携带token。进行验证。

1 获得token 切割三部分
2获取playload信息,检测是否超时?
3 12拼接再次加密+加盐 =.> 密文 base64解密(12312312asdasd)
4 如果第三部分相等,token没有修改过,认证通过

pip install pyjwt
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyjwt

你可能感兴趣的:(vue,django)