【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_tokenurlpatterns = [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 theserialized 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',
}

运行得到想要的结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次安装nvm切换node.js版本实例详解

最后效果如下: 背景:由于我以前安装过node.js,后续想安装nvm将node.js管理起来。 问题:nvm-use命令行运行成功,但是nvm-list显示并没有成功。 原因:因为安装过node.js,所以原先的node.js不收n…

Android复习(Android基础-四大组件)—— Activity

Activity作为四大组件之首,是使用最为频繁的一种组件,中文直接翻译为"活动",不过如果被翻译为"界面"会更好理解。正常情况,除了Window,Dialog和Toast , 我们能见到的界面只有Activity。…

RT1052 的四定时器

文章目录 1 Quad Timer,简称:QTMR2 单个通道的框图3 QTMR配置3.1 QTMR1 时钟使能。3.2 初始化 QTMR1。3.2.1 QTMR_Init 3.3 设置 QTMR1 通道 0 的定时周期。3.3.1QTMR_SetTimerPeriod 3.4 使能 QTMR1 通道 0 的比较中断。3.4.1 QTMR_EnableInterrupts 3.…

Python的Selenium 3 和Selenium 4的写法区别

1.Python 版本问题: Selenium 3的话使用Python 3.6.5都可以继续编写,但是到了Selenium 4的时候,python 的版本需要 3.7 或 更高的版本。 2.差异: Selenium 4 移除了对旧协议的支持,并在引擎盖下默认使用 W3C WebDriver…

oracle_11g更改统计信息收集时间

1.获得当前自动收集统计信息的执行时间 col WINDOW_NAME for a20col REPEAT_INTERVAL for a80col DURATION for a30set linesize 1200SELECT t1.window_name, t1.repeat_interval, t1.duration,enabled FROM dba_scheduler_windows t1;WINDOW_NAME REPEAT_INTERVAL …

Docker安装 Mysql 8.x 版本

文章目录 Docker安装 Mysql 8.0.22Mysql 创建账号并授权Mysql 数据迁移同版本数据迁移跨版本数据迁移 Mysql 5.x 版本与 Mysql 8.x版本是两个大版本,这里演示安装Mysql 8.x版本 Docker安装 Mysql 8.0.22 # 下载mysql $ docker pull mysql 默认安装最新…

web学习

TCP/IP体系结构(IP和端口): IP是什么:是计算机在互联网上的唯一标识(坐标,代号),用于在互联网中寻找计算机。 访问网站时:域名会通过DNS(解析服务&#xff…

Redis部署

一、redis hash tag 使用原因,出现错误 redis.exceptions.ResponseError: CROSSSLOT Keys in request dont hash to the same slot 在集群中,key会被划分到不同的槽中。不同的节点会拥有散列槽的一个子集。 多个key的操作、事务或者lua脚本调用多个k…

Vue通过指令 命令将打包好的dist静态文件上传到腾讯云存储桶 (保存原有存储目录结构)

1、在项目根目录创建uploadToCOS.js文件 (建议起简单的名字 方便以后上传输入命令方便) 2、uploadToCOS.js文件代码编写 const path require(path); const fs require(fs); const COS require(cos-nodejs-sdk-v5);// 配置腾讯云COS参数 const cos n…

ffmpeg 中 av_log 是怎样工作的?

---------------------------------------- author: hjjdebug date: 2023年 07月 27日 星期四 14:56:38 CST descriptor: ffmpeg 中 av_log 是怎样工作的? ---------------------------------------- av_log 功能其实只是添加了颜色,LOG级别,及log上下文名称,没有添加时间,函…

工程师是怎样对待开源

工程师如何对待开源 本文是笔者作为一个在知名科技企业内从事开源相关工作超过 20 年的工程师,亲身经历或者亲眼目睹很多工程师对待开源软件的优秀实践,也看到了很多 Bad Cases,所以想把自己的一些心得体会写在这里,供工程师进行…

跨域冲突问题解决

1、问题分析 服务端和nginx代理 都做了跨域配置,导致请求头重复 headers 里面有两个重复的 Access-Control-Allow-Origin Access-Control-Allow-Methods Access-Control-Allow-Credentials 2、解决方法 在nginx去除服务端的跨域配置 proxy_hide_header Access-…

铁路关基保护新规:优先采购安全可信的网络产品和服务!

《征求意见稿》第十四条提到:运营者应当加强供应链安全保护,优先采购安全可信的网络产品和服务;采购网络产品和服务影响或者可能影响国家安全的,运营者应当预判网络产品和服务投入使用后可能带来的国家安全风险,按照国…

quarkus核心编程笔记

此篇只做总结,有大佬做的更详细 大佬quarkus笔记 依赖注入 在应用中,一个接口有多个实现是很常见的,那么依赖注入时,如果类型是接口,如何准确选择实现呢? 修饰符匹配Named注解属性匹配根据优先级选择写…

gitlab api获取用户星标项目

获取所有项目 gitlab_url: gitlab的地址 token: 管理员账号的access_token https://gitlab_url/api/v4/projects/?private_tokentoken&page1&per_page20注:该链接只获取一页的数据,可通过循环累加page遍历所有项目获取某个用户的星标项目 参考…

论文笔记--GloVe: Global Vectors for Word Representation

论文笔记--GloVe: Global Vectors for Word Representation 1. 文章简介2. 文章概括3 文章重点技术3.1 两种常用的单词向量训练方法3.2 GloVe3.3 模型的复杂度 4. 文章亮点5. 原文传送门6. References 1. 文章简介 标题:GloVe: Global Vectors for Word Representa…

自己实现MyBatis 底层机制--抽丝剥茧(上)

😀前言 本篇博文是学习过程中的笔记和对于MyBatis底层机制的分析思路,希望能够给您带来帮助😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到…

WPF实战学习笔记32-登录、注册服务添加

增加全局账户名同步 增加静态变量 添加文件:Mytodo.Common.Models.AppSession.cs ausing Prism.Mvvm; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; us…

(树) 剑指 Offer 27. 二叉树的镜像 ——【Leetcode每日一题】

❓剑指 Offer 27. 二叉树的镜像 难度:简单 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4/ \2 7/ \ / \1 3 6 9镜像输出: 4/ \7 2/ \ / \9 6 3 1示例 1: 输…

28_计算机网络(Computer Networks)基础

本篇介绍计算机网络的基础知识。 文章目录 1. 计算机网络历史2. 以太网" (Ethernet)2.1 以太网" (Ethernet)的简单形式及概念2.2 指数退避解决冲突问题2.3 利用交换机减少同一载体中设备2.4 互联网(The Internet)2.5 路由(routing)2.6 数据包…