当前位置: 首页 > news >正文

孝感网站开发找优搏修改网站参数

孝感网站开发找优搏,修改网站参数,锦州建设银行网站,会计公司介绍 创建系统管理app,用于管理系统的用户,角色,权限,登录等功能,项目中将使用django-rest_framework进行用户认证和权限解析。这里将完成用户认证 用户验证 rest_framework.authentication模块中的认证类&#xff…

介绍

创建系统管理app,用于管理系统的用户,角色,权限,登录等功能,项目中将使用django-rest_framework进行用户认证和权限解析。这里将完成用户认证

用户验证

rest_framework.authentication模块中的认证类,例如:
session认证:SessionAuthentication(基于session)
token 认证:TokenAuthentication(API Token)
自定义认证:BasicAuthentication(HTTP Basic Auth)

  1. 这里采用djangorestframework-simplejwt设计自定义认证类和自定义登录
pip install djangorestframework-simplejwt
  1. 创建用户模型表user
from django.db import models from django.contrib.auth.hashers import make_password, check_password# Create your models here.class User(models.Model):username = models.CharField(max_length=255, unique=True, verbose_name="手机号")password = models.CharField(max_length=255, unique=False, verbose_name="密码")is_vip = models.BooleanField(default=False,verbose_name="是否为vip")vip_expires_at = models.DateTimeField(auto_now_add=True,verbose_name="vip过期时间")is_active = models.BooleanField(default=True)class Meta:db_table = "user"verbose_name = "用户账号表"verbose_name_plural = verbose_name
  1. 数据库迁移
python manage.py makemigrations
python manage.py migrate 
  1. 在根目录下创建utils目录,在utils目录中创建文件Authentication.py和jwt.py
 ## Authentication.pyfrom rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from rest_framework_simplejwt.views import TokenObtainPairView
from rest_framework import serializers
from user.models import User# 自定义认证类
class MyTokenObtainPairSerializer(TokenObtainPairSerializer):"""自定义登录认证,使用自有用户表username、password这两个字段为必传字段因为 DRF 要检查这些字段是否有效username_field = 'phone_number'  这是重命名了,username必传字段设置为了phone_number字段必传phone_number = serializers.CharField(required=False) # 这个是设置了自定义的字段是否必传"""def validate(self, attrs):username = attrs.get("username")password = attrs.get("password")if not username or not password:raise serializers.ValidationError("phone_number and password are required")try:user = User.objects.get(username=username, password=password)except User.DoesNotExist:raise serializers.ValidationError("No user found with this username and password.")print(user)refresh = self.get_token(user)data = {"userId": user.id, "token": str(refresh.access_token), "refresh": str(refresh),'is_vip': user.is_vip}return dataclass MyTokenObtainPairView(TokenObtainPairView):serializer_class = MyTokenObtainPairSerializer
## jwt.py
from rest_framework_simplejwt.authentication import JWTAuthentication
from rest_framework_simplejwt.exceptions import InvalidToken, AuthenticationFailed
from django.utils.translation import gettext_lazy as _
# 自定义的用户模型
from user.models import Userclass MyJWTAuthentication(JWTAuthentication):'''修改JWT认证类,返回自定义User表对象'''def get_user(self, validated_token):try:user_id = validated_token['user_id']except KeyError:raise InvalidToken(_('Token contained no recognizable user identification'))try:user = User.objects.get(**{'id': user_id})except User.DoesNotExist:raise AuthenticationFailed(_('User not found'), code='user_not_found')return user
  1. 在settings.py同级目录下创建drf_settings.py 并引入settings.py 中
## drf_settings.py
REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.IsAuthenticated',],'DEFAULT_AUTHENTICATION_CLASSES': ['utils.jwt.MyJWTAuthentication' # 认证方式为自定义的认证类],
}

引入settings中

import drf_settings
REST_FRAMEWORK = drf_settings.REST_FRAMEWORK
  1. 创建一个app:userauth,在views.py中写入一个接口视图
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response# Create your views here.class UserTestView(APIView):def post(self, request,*args, **kwargs):s = str(request.user.__dict__)return Response(s)
  1. 在app:userauth:urls中设置路由
from django.urls import path, include
from rest_framework import routers
from rest_framework_simplejwt.views import TokenVerifyView, TokenRefreshView
from utils.authentication import MyTokenObtainPairView
from userauth.views import UserTestViewrouter = routers.DefaultRouter()urlpatterns = [path("login/", MyTokenObtainPairView.as_view()),                           # 登录path("refresh/", TokenRefreshView.as_view(), name="token_refresh"),        # 刷新tokenpath("verify/", TokenVerifyView.as_view(), name="token_verify"),            # 验证tokenpath("test/", UserTestView.as_view(), name="test")
]
urlpatterns.append(path('', include(router.urls)))
  1. 这里没有写注册功能,所以只有手动在数据库中创建一个用户
    在这里插入图片描述

  2. 使用postman进行登录测试
    在这里插入图片描述

  3. 刷新token测试
    在这里插入图片描述

  4. 接口测试
    在这里插入图片描述

参考链接:https://blog.csdn.net/qq_42410176/article/details/130568130?spm=1001.2014.3001.5502

http://www.15wanjia.com/news/159452.html

相关文章:

  • 做网站还赚钱吗vultr服务器建wordpress
  • 什么网站做一手项目好襄阳最新消息
  • 自己制作免费网站腾讯网站统计代码
  • 一个简单网页的代码天津关键词优化网排名
  • 济南网站优化推广公司全国十大网站建设公司
  • 基于wordpress多商户宁波seo网络推广优质团队
  • 免费做的网站怎么设置域名解析上海企业网站seo多少钱
  • 做相册的网站 网易做网站代理商好赚吗
  • 厦门网站建设费用泰安房价网二手房出售信息
  • 天津 做网站做外包网站的公司是怎样的
  • 网站 html寻找郑州网站建设公司
  • 一般网站后台地址教务处网站建设方案
  • 建设网站模板免费下载嘉兴网站制作费用
  • 在国税网站怎么做实名淄博手机网站建设报价
  • 寻找石家庄网站建设iis7 网站404错误信息
  • 效果图制作软件免费郑州seo代理外包公司
  • 图片编辑工具免费版衡水网站优化推广
  • 个股期权网站开发wordpress相关问题
  • 团购网站管理系统淘宝客如何做免费的网站
  • 如何做环保管家网站wordpress ueeshop
  • 网站文章优化技巧佛山cms建站系统
  • 洛阳做网站价格广告公司手机网站建设
  • 临邑建设局官方网站阿里云网站建设流程教案
  • 网站开发企业培训报名免费网站用官微建站
  • 做国外贸易哪个网站好建设一个平台网站需要多少钱
  • 网站推广服务费会计分录怎么做免费毕业设计的网站建设
  • 北京网站优化诊断网站开发毕业设计任务书怎么写
  • 网站建设知识学习心得做电影网站需要用什么空间
  • 手机网站自助网站的策划方案怎么写
  • 做视频特效的网站破解wordpress主题教程