美文网首页
测开平台(1) - 用户权限验证2-认证和授权

测开平台(1) - 用户权限验证2-认证和授权

作者: 足__迹 | 来源:发表于2019-11-10 21:01 被阅读0次
    • 页面认证 Browsable API 页面认证
      1,指定permission_classes
      2,添加rest_framework.urls 路由

    • json web Toke认证

      • 常见的认证机制
        1,session 认证
        2,Token 认证
    • Session认证
      1,保持在服务端,增加服务器开销
      2,分布架构中,难以保持session绘画同步
      3,CSRF风险

    • Token 认证
      1,保存在客户端
      2,跨语言,跨平台
      3,推展性强
      4,鉴权性能高

    JWT

    • 安装第三方模块 rest_framework_jwt
    • 设置获取Token的接口
      1, 在user模块的urls中添加
    from django.urls import path, include
    from rest_framework_jwt.views import obtain_jwt_token
    
    urlpatterns = [
    
       path('login/', obtain_jwt_token),
    ]
    
    

    2,在项目setting中设置
    2.1 设置允许JWT认证

      'DEFAULT_AUTHENTICATION_CLASSES': [
          #默认首先token认证
          'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
          'rest_framework.authentication.SessionAuthentication',
          'rest_framework.authentication.BasicAuthentication'
      ],
    
    

    2.2 设置路由

     path('user/',include('user.urls'))
    

    演示:

    • 获取token


      image.png
    • 获取数据


      image.png

    注意使用POSTMAN 需要修改默认的JWT_AUTH_HEADER_PREFIX


    image.png

    源码:
    这个函数负责token返回,如果需要定制则重写这个函数

    def jwt_response_payload_handler(token, user=None, request=None):
        """
        Returns the response data for both the login and refresh views.
        Override to return a custom response such as including the
        serialized representation of the User.
    
        Example:
    
        def jwt_response_payload_handler(token, user=None, request=None):
            return {
                'token': token,
                'user': UserSerializer(user, context={'request': request}).data
            }
    
        """
        return {
            'token': token
        }
    

    在utile中重写,在setting中重新指定:


    image.png
      'JWT_RESPONSE_PAYLOAD_HANDLER': 'utils.jwt_handler.jwt_response_payload_handler',
    

    JWT的组成

    image.png
    • 第一部分 头:可以通过base64为解密,不会存放任何敏信息


      image.png
    • 第三部分 : 通过秘钥加密


      image.png

    相关文章

      网友评论

          本文标题:测开平台(1) - 用户权限验证2-认证和授权

          本文链接:https://www.haomeiwen.com/subject/fpblbctx.html