zoukankan      html  css  js  c++  java
  • Django商城项目笔记No.9用户部分-注册接口签发JWTtoken

    Django商城项目笔记No.9用户部分-注册接口签发JWTtoken

    我们在验证完用户的身份后(检验用户名和密码),需要向用户签发JWT,在需要用到用户身份信息的时候,还需核验用户的JWT。

    关于签发和核验JWT,我们可以使用Django REST framework JWT扩展来完成。

    安装配置

    # 安装
    pip install djangorestframework-jwt
    # 配置
    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': (
            'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
            'rest_framework.authentication.SessionAuthentication',
            'rest_framework.authentication.BasicAuthentication',
        ),
    }
    
    JWT_AUTH = {
        'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
    }
    • JWT_EXPIRATION_DELTA 指明token的有效期

    手动签发JWT的方法

    from rest_framework_jwt.settings import api_settings
    
    jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
    jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
    
    payload = jwt_payload_handler(user)
    token = jwt_encode_handler(payload)

    在注册成功后,连同返回token,需要在注册视图中创建token。

    修改CreateUserSerializer序列化器,在create方法中增加手动创建token的方法

    注意导包

    oken有了,我们需要将token返回给前端,怎么反呢?

    我们返回的是user模型类转换后的json数据,那么就将token增加到user模型类中即可:

    因为token字段只需要返回给前端,所以是read_only,只需要序列化。

    返回user前,给user模型类增加token属性:

    问题:

    为啥还要添加user.token=token。给user增加token属性呢?

    上边的序列号器不是增加过token了?注意序列化器是序列化器,模型类是模型类。

    序列化器中有token字段,只会在序列化的时候,帮助你序列化token字段而已,但是你的模型类中没有token字段,序列化器怎么帮你做序列化操作呢?(序列化是将模型类转换为字典,转换为json)

     测试

  • 相关阅读:
    Input 银行卡验证
    记一次坑爹的加解密问题
    C# Html Agility Pack
    记一次坑爹的 “跨域” 问题
    FindControl的使用方法
    C#如何使用异步编程
    ReportViewer中设置ServerReport.ReportServerCredentials属性的方法
    C#中常用接口介绍
    谈谈C#中的接口
    DataTable与Linq相互转换
  • 原文地址:https://www.cnblogs.com/blog-rui/p/9746186.html
Copyright © 2011-2022 走看看