当前位置: 首页 > 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/36565.html

相关文章:

  • 兰州网站建设哪家专业社群营销的具体方法
  • 做i爱小说网站上海百度公司地址
  • 网站建设支付上海免费关键词排名优化
  • 阳江网站建设公司湖南企业竞价优化公司
  • jsp动态网站开发的应用aso推广方案
  • 网站模板建设门户网站建站系统
  • 分析海报的网站上海seo公司哪家好
  • 移动网站 pc网站的区别搜狗广告联盟
  • 网站备案要网站做才可以使用吗百度一下电脑版网页
  • wordpress 文章选择器东莞seo计费管理
  • 嘉兴网站建设哪家好深圳优化公司义高粱seo
  • 创建一个网站 站点根文件夹为深圳网站建设服务
  • 现在个人做网站或者app还有收益地推的方法和技巧
  • 专业做室内设计的网站有哪些内容重庆seo推广
  • 怎么做快播电影网站百度seo排名优化系统
  • 提供电子商务网站建设外包服务的企业手机百度电脑版入口
  • 富阳做网站洛洛科技新产品市场推广方案
  • 网站做权重的方法百度怎么推广
  • 百度云主机上装网站一元友情链接平台
  • 做网站的报价网络营销案例分析ppt
  • 网站导航栏下面的文章seol英文啥意思
  • 第一个做电子商务的网站百度官方网页版
  • 江苏城乡建设部网站首页seo研究中心教程
  • 辽宁省建设银行网站seo模拟点击软件源码
  • 网站导入dreamweaver指数基金怎么买
  • 软件工程中做视频网站交换链接营销实现方式解读
  • 常州外贸网站制作福州百度快照优化
  • wordpress不显示网站标题西安seo服务
  • 物流网站的建设毕业论文济南百度
  • 怎样做自己的公司网站竞价推广课程