JWT后端代码,登录,注册
第一步: 配置settings:
0.1:配置 INSTALLED_APPS
加入rest_framework
0.2:配置 AUTH_USER_MODEL
0.3:配置 REST_FRAMEWORK
0.4 配置 JWT_AUTH
第二步:建立model模型类
# 导包, 属于Django自带的User用户包
form django.contrib.auth.models import AbstractUser
# user数据
class UserModel(AbstractUser):
username = models.CharField(max_length=100,unique=True)
password = models.CharField(max_length=255)
phone = models.CharField(max_length=100)
token = models.CharField(max_length=255)
第三步:迁移生成表
# 迁移的第一步
python manage.py makemigrations
# 迁移的第二步
python manage.py migrate
第四步:编写序列化器 serializers
from rest_framework import serializers # 序列化器的基本导包 from user.models import UserModel # 导入模型类 class JWT_User_Ser(serializers.ModelSerializer): class Meta: model = UserModel # model表 fields = '__all__' # 全部数据
第五步:编写View,写注册,登录代码
from django.shortcuts import render # 自带的导包 from rest_framework.views import APIView # APIView 导包 from rest_framework.views import Response # 返回 Response 导包 from rest_framework_jwt.settings import api_settings # 生成token导包 from user.serializers import JWT_User_Ser #序列化导包 from django.contrib.auth.hashers import make_password # 密码加密导包 import copy # 拷贝的导包 from user.models import UserModel # 模型类导包 #权限 #是否认证 # 允许通过 from rest_framework.permissions import IsAuthenticated,AllowAny # 权限导包 # Create your views here. # 使用jwt编写注册代码 class UserView(APIView): def post(self,request): # 1 接收参数 data = request.data # 2 深入拷贝接收过来的参数 sky = copy.deepcopy(data) # 3 取出旧密码 old_password = data.get('password') # 4 旧密码加密转换成新密码 new_password = make_password(old_password) # 将新密码赋值 sky['password'] = new_password # 2 序列化解析新密码 ser_user = JWT_User_Ser(data=sky) # 3 校验 新密码 ser_user.is_valid() # 4 保存 新密码 ser_user.save() # 生成token user = UserModel.objects.get(username=sky['username']) 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) # user.token = token print(token) # 将token和数据库用户信息进行返回 resopnse_data = ser_user.data resopnse_data['JWTToken'] = token # 5 返回 return Response({'code':200,'data':resopnse_data}) # 重新用户登录返回函数 def jwt_response_payload_handler(token,user=None,request=None): ''' :param token: jwt生成的token值 :param user: User对象 :param request: 请求 ''' return { 'token':token, 'username':user.username, 'userid':user.id, 'phone':user.phone } class TestList(APIView): permission_classes = [AllowAny] # 接口加权限 # authentication_classes = def get(self,request): return Response({'msg':'允许访问'}) class TestStr(APIView): permission_classes = [IsAuthenticated] def get(self,request): return Response({'msg':'请登录后再来访问'})
第六步:配置路由URL
from django.contrib import admin from django.urls import path,re_path,include from user.views import UserView,TestList,TestStr #导入View中的函数 from rest_framework_jwt.views import obtain_jwt_token # 验证码导包 urlpatterns = [ path('admin/', admin.site.urls), #全局路由 导入re_path,include #re_path(r'users/',include(('users.urls','users'),namespace='users')) path('users/',UserView.as_view()), # jwt编写注册路由 path('login/',obtain_jwt_token), # 登录路径 path('testlist/',TestList.as_view()), # 接口权限 path('teststr/',TestStr.as_view()), # 接口权限 ]
网址:
https://www.cnblogs.com/ppzhang/p/12294852.html JWT后端代码网址
https://www.cnblogs.com/ppzhang/p/12294798.html JWT理论知识点网址
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!