Django5+Vue3:OA系统前后端分离项目实战-后端登录功能实现(7)

Django5+Vue3系列文章

前言

本节开始,全文仅对会员开放。

若点赞和收藏数量超过100,全文将免费开放。

 此项目采用 Django 框架的 5.0.7 版本进行开发。

Django 5.0 支持的 Python 版本为 3.10、3.11 和 3.12。

OA 系统系列文章将持续更新,直至项目的 Docker 部署阶段。

专栏链接:  ~快捷传送门: 留个赞再走呗😭! ~

个人博客: ~所有文章尽在简客免费阅读~

文章目录

目录

Django5+Vue3系列文章

前言

文章目录

一、登录验证流程:使用Views视图函数进行数据校验

打开apps/oaauth/views.py,定义视图函数

二、数据验证自动化:Serializer序列化器的应用

1.定义LoginSerializer并对validate方法进行重写

2.序列化模型定义与模型嵌套

三、JWT Token权限认证

创建apps\oaauth\authentications.py文件

四、路由映射

1.创建\apps\oaauth\urls.py文件

2.项目根目录添加子路由 

五、Postman测试

1.验证:失败情况示例

2.验证:成功情况示例

总结

一、登录验证流程:使用Views视图函数进行数据校验

打开apps/oaauth/views.py定义视图函数

代码如下(示例):

from django.shortcuts import render
from rest_framework.views import APIView
from apps.oaauth.serializers import LoginSerializer, UserSerializer
from datetime import datetime
from .authentications import generate_jwt
from rest_framework import status
from rest_framework.response import Response

# Create your views here.


class LoginView(APIView):
    # 登录只能用post方法向服务端发送请求
    def post(self,request):
        # 1.验证数据是否可用,在此使用序列化校验数据库与客户端发送到数据
        serializer = LoginSerializer(data=request.data)
        # 如果验证成功
        if serializer.is_valid():
            # 间接获取数据库数据(attrs['user'] = user)
            user = serializer.validated_data.get('user')
            # 记录上次登陆的时间
            user.last_login = datetime.now()
            user.save()
            # 登陆成功,生成并返回JWT Token
            token = generate_jwt(user)
            return Response({'token': token, 'user': UserSerializer(user).data})
        # 身份验证失败
        else:
            print(serializer.errors)
            return Response({"message": "参数验证失败!"}, status=status.HTTP_400_BAD_REQUEST)

在定义登录的视图函数时,身份验证是一个关键步骤,通常我们会使用序列化器来处理数据。为此,我们需要创建一个专门的序列化器来进行身份验证。

序列化器: 通过定义数据模型的规则和验证逻辑,确保接收到的数据符合预期格式并进行安全检查。


二、数据验证自动化:Serializer序列化器的应用

1.定义LoginSerializer并对validate方法进行重写

创建apps/oaauth/serializers.py文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fenderisfine

蟹蟹你的奶茶😘

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值