drf—— 响聊聊cookie session token的演变

1、会话保持

会话保持是指在负载均衡器上的一种机制,能够识别客户端与服务器之间交互过程的关连性,在做负载均衡的同时还保证一系列相关连的访问请求都会分配到一台机器上。
用人话来表述就是:在一次会话过程当中发起的多个请求都会落到同一台机器上。

2、cookie session token的演变

cookie:客户端浏览器上的键值对,缺陷是:数据不安全
以后有了
session:服务端的键值对(内存,数据库,redis,文件),客户端只放一个随机字符串,安全(即使是泄露,也只是单我的的随机字符串被泄露,别人的猜不出来),缺陷是:对服务端压力大
以后有了
token:分三段:头.荷载.签名
        -header(公司信息,加密方式。。。)
        -payload(荷载,真正有用的数据部分,放用户id,用户名字。。(是拼在token串中的,因此就放在客户端了,客户端发请求会携带过去,这样子像cookie固然不安全,
          因此有了signature))
-signature(签名,为了安全,把头和荷载部分经过不可逆加密算法加密---》获得一个签名)
  

  好比token:
    head.{name:lili,age:18}.eseetsweasdca
    base64加码后变成:
    asdfasfd.asdfasdf.asdfasdfaeraewhtml

由于token框架都要用,因此网上开源出drf-jwt模块

-更详细看演变:https://www.cnblogs.com/liuqingzheng/articles/9509779.html

3、drf-jwt模块redis

1.快速使用算法

-快速使用:(默认使用的是auth的user表)
        -1 建立用户
        -2 在路由中配置path('login/', obtain_jwt_token),
        -3 在postman中测试,用户名密码输入刚刚建立的用户就能够生成token
        -4 让一个视图必须登陆之后才能访问
            -authentication_classes = [JSONWebTokenAuthentication, ] #认证(此认证类便可的登陆访问,又可不登陆访问,因此要加权限)
            -permission_classes = [IsAuthenticated,]#权限
        -5 让一个视图能够登陆后访问,也能够不登陆访问
            -authentication_classes = [JSONWebTokenAuthentication, ]
        -6 用postman测试,在请求头中加入
            -key:Authorization  value:jwt+空格+token串

2.本身写基于jwt的认证类(登陆了能访问,不登陆就不能访问)数据库

-本身写基于jwt的认证类(登陆了能访问,不登陆就不能访问)
    class JwtAuthentication(BaseJSONWebTokenAuthentication):
        def authenticate(self, request):
            #取出token token=request.GET.get('token')
            token=request.META.get('HTTP_AUTHORIZATION')
            try: 
                # 验证token是否正确
                payload = jwt_decode_handler(token)
            except jwt.ExpiredSignature:
               raise AuthenticationFailed('过时了')
            except jwt.DecodeError:
               raise AuthenticationFailed('解码错误')
            except jwt.InvalidTokenError:
               raise AuthenticationFailed('不合法的token')
               #也能够只写一个except Exception('token不合法') 
            user=self.authenticate_credentials(payload)
            return (user, token)
-自定制认证类的使用方式:
    -全局使用
    -局部使用-更详细JWT请看:https://www.cnblogs.com/guojieying/p/13966264.html
相关文章
相关标签/搜索