【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中

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

 查看ObtainJSONWebToken类:

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

【Django学习】(十六)session_token认证过程与区别_响应定制,学习,django,python,后端​ 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方法:

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

 登录之后发现输出只有返回token字段【Django学习】(十六)session_token认证过程与区别_响应定制,学习,django,python,后端

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

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

【Django学习】(十六)session_token认证过程与区别_响应定制,学习,django,python,后端​ 

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

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

 如果不需要改写,可以在项目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

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

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

本地项目的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',
}

运行得到想要的结果

【Django学习】(十六)session_token认证过程与区别_响应定制,学习,django,python,后端文章来源地址https://www.toymoban.com/news/detail-616918.html

到了这里,关于【Django学习】(十六)session_token认证过程与区别_响应定制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django DRF - 【Token】认证基本使用

    Django Rest Framework Token 是Django Rest Framework中的一个扩展,用于实现用户认证和授权。它为每个用户生成一个唯一的Token,并将其存储在数据库中。在用户进行API请求时,用户需要在请求的HTTP Header中包含Token,这样服务器就可以验证用户的身份。 迁移完成会生成 authtoken_token 这张

    2024年02月12日
    浏览(37)
  • 3-1. SpringBoot项目集成【用户身份认证】实战 【技术选型篇】基于Session、Token、JWT怎么选?

    通过第二章2-2. SpringBoot API开发详解 --SpringMVC注解+封装结果+支持跨域+打包,我们实现了基于SpringBoot项目的 API接口开发 ,并实现 API结果统一封装、支持跨域请求 等等功能,接下来开始第三章,主要做用户身份认证,主要实现一套 统一鉴权的用户身份认证的机制 。 我已经提

    2024年01月22日
    浏览(55)
  • Django基础7——用户认证系统、Session管理、CSRF安全防护机制

    Django内置一个用户认证系统,使用auth模块实现。 auth模块提供了登录、注册、效验、修改密码、注销、验证用户是否登录等功能。 Django默认创建的数据库表。 表名 作用 auth_user 用户表 auth_user_groups 用户所属组的表 auth_user_user_permissions 用户权限表 auth_group 用户组表 auth_group_

    2024年02月11日
    浏览(42)
  • Django使用Token认证(simplejwt库的配置)

    https://django-rest-framework-simplejwt.readthedocs.io/en/latest/

    2024年02月07日
    浏览(42)
  • 安全学习DAY23_Cookie&Session&Token

    Cookie和Session都是用来在Web应用程序中跟踪用户状态的机制 1、存储位置不同: Cookie是存储在客户端(浏览器)上的,而Session是存储在服务器端的。 2、安全性不同: Cookie存储在客户端上,可能会被黑客利用窃取信息,而Session存储在服务器上,更加安全。 3、存储容量不同:

    2024年02月09日
    浏览(32)
  • web学习--登录认证--会话技术--cookie--session--令牌--java-jwt使用--jjwt使用

    前置学习: http springmvc 会话:用户打开浏览器,访问web服务器资源,会话建立,直到有一方断开连接会话结束,一次会话可以多次请求和连接 会话跟踪:一种维护浏览器状态的方式,服务器需要识别多次请求是否来自同一浏览器,以便同一次会话多次请求间共享数据。 cooki

    2024年02月15日
    浏览(67)
  • Django学习笔记-默认的用户认证系统(auth)

    Django 自带一个用户验证系统。它负责处理用户账号、组、权限和基于cookie的用户会话。 Django 验证系统处理验证和授权。简单来说,验证检验用户是否是他们的用户,授权决定已验证用户能做什么。这里的术语验证用于指代这两个任务。 认证系统由以下部分组成: 用户 权限

    2024年02月14日
    浏览(44)
  • (二十六)Flask之原生session切为flask-session

    🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥 本文已收录于Flask框架从入门到实战专栏 :

    2024年04月11日
    浏览(40)
  • cookie+session和token

    总结说在前面: session:起源于服务端,保存在服务端(服务器或者数据库),通过cookie传递给用户,用户每一次发送HTTP请求的时候,通过验证cookie中的session-id来验证用户身份。 jwt(json web token):起源于服务端,保存在浏览器(cookie或者storage),和session一样,用户每一次发

    2024年02月19日
    浏览(43)
  • cookie、session、token的区别

    HTTP无状态 当登录一个大部分网站的时候,第一次登录之后,之后的很长一段时间当我们再次访问网站的时候都不需要我们再次登录了,这个是怎么回事呢? 我们都知道http是无状态的,什么是无状态:关闭网页,再次访问服务器,服务器是不能知道是你在访问。所以就是靠接

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包