IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django--JWT -> 正文阅读

[Python知识库]Django--JWT

1.JWT

单向且不可逆的所以安全性较高,可以解码,不占用服务器内存,扩展能力较强,解决传统的session方法出现的问题

2.djangorestframework-jwt使用

在django安装

pip install djangorestframework-jwt
2.1配置

在settings.py中进行配置

from datetime import timedelta
JWT_AUTH = {
    # jwt过期时间
    "JWT_EXPIRATION_DELIA":timedelta(days=2),
}
2.2提供了登录方法

配置路由

from rest_framework_jwt.views import obtain_jwt_token
urlpatterns = [
    path('login/', obtain_jwt_token), #登录视图函数
]
2.3自定义返回数据

因为视图只返回token,所以对自定义视图
在子应用下创建utils.py

def jwt_response_payload_handler(token,user,request,*args,**kwargs):
	return {
		"uid":user.id,
		"username":user.username,
		"token":token
	}

在settings.py进行配置

JWT_AUTH = {
	 # jwt 过期时间
    "JWT_EXPIRATION_DELIA":timedelta(days=2),
    # 配置自定义函数
    "JWT_RESPONSE_PAYLOAD_HANDLER": "user.utils.jwt_response_payload_handler"

}
2.4 增加登录功能

在登录时进行验证用户信息,所以自定义认证类
修改Django认证系统的认证后端需继承django.contrib.auth.backends.ModelBackend,重写authenticate方法

from django.contrib.auth.backends import ModelBackend
from .models import User
from django.contrib.auth.hashers import check_password
# 定义自己的认证类
class MyAuthentication(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        # is_staff 为true
        # is_active 为true

        # 根据需求查询用户对象
        user = User.objects.filter(username=username,is_active=True,is_staff=True).first()

        # 判断用户是否存在、密码是否正确
        # check_password 会对前端传来的密码进行加密
        if user and check_password(password, user.password):
            return user

        return None
2.5配置自定义认证类
# 配置自定义认证类
AUTHENTICATION_BACKENDS = [
    'user.utils.MyAuthentication',
]
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:49:56  更:2022-07-04 22:52:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 13:02:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码