【Django学习】(十六)session_token认证过程与区别_响应定制

简介: 【Django学习】(十六)session_token认证过程与区别_响应定制

一、认识session与token

这里就直接引用别人的文章,不做过多说明

网络应用中session和token本质是一样的吗,有什么区别? - 知乎

二、token响应定制

在全局配置表中配置

'DEFAULT_AUTHENTICATION_CLASSES': [
        # 指定jwt Token认证
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication'

rest_framework_jwt/views.py中

查看ObtainJSONWebToken类:

发现里面引用了JSONWebTokenSerializer序列化器类

users应用的url.py

引用obtain_jwt_token

from django.urls import path
from interfaces import views
from  rest_framework_jwt.views import obtain_jwt_token
urlpatterns = [
    path('login/', obtain_jwt_token)
]

发现rest_framework_jwt/views.py中有提供post方法:

登录之后发现输出只有返回token字段

如果我们想让user_id和user_name也输出的话,我们就要定制输出了

查看rest_framework_jwt/views.py中post方法里面有调用jwt_response_payload_handler方法

如果不需要改写,可以在项目setting.py文件中直接引用

JWT_AUTH={
    'JWT_RESPONSE_PAYLOAD_HANDLER':
        'rest_framework_jwt.utils.jwt_response_payload_handler',
}

终于在rest_framework_jwt.utils.py文件中发现了jwt_response_payload_handler

所以我们要改写这个方法:

本地项目的utils文件夹中新建一个handler_jwt_response.py

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 {
        'user_id': user.id,
        'user_name': user.username,
        'token': token
    }

改写之后,还要在全局配置表里修改引用路径

JWT_AUTH={
    'JWT_RESPONSE_PAYLOAD_HANDLER':
        # 'rest_framework_jwt.utils.jwt_response_payload_handler',
        'utils.handler_jwt_response.jwt_response_payload_handler',
}

运行得到想要的结果

相关文章
|
7月前
|
Python
Django模板加载与响应2
Django模板加载与响应2
39 0
|
7月前
|
存储 缓存 数据库
Django框架学习(四)
Django框架学习(四)
|
7月前
|
前端开发 关系型数据库 MySQL
Django框架学习(三)
Django框架学习(三)
|
7月前
|
JSON 前端开发 数据库
Django框架学习(一)
Django框架学习(一)
|
4月前
|
调度 Apache 数据库
Django 学习教程-第一个 Django 应用
本章主要讲述了如何创建一个Django项目,以一个投票案例程序介绍了Django的请求和响应流程。
51 1
|
4月前
|
Python
Django 学习教程-介绍与安装
本章介绍了Django是什么,以及为什么使用Django和安装Django
40 1
Django 学习教程-介绍与安装
|
5月前
|
前端开发 数据库 网络架构
Python Django框架中文教程:学习简单、灵活、高效的Web应用程序框架
Python Django框架中文教程:学习简单、灵活、高效的Web应用程序框架
|
7月前
|
开发者 索引 Python
Django模板加载与响应1
Django模板加载与响应1
42 0
|
7月前
|
安全 中间件 API
详解Django请求与响应:深入理解Web Http交互的核心机制
详解Django请求与响应:深入理解Web Http交互的核心机制
74 0
|
7月前
|
存储 NoSQL 中间件
Django框架学习(二)
Django框架学习(二)