• 认证组件


    urls.py

    urlpatterns = [   
        url(r'^user$',UserView.as_view()),     # 在数据空中写入username和token
        url(r'^test',TestAuthView.as_view()),  # 认证测试视图   http://127.0.0.1:8000/test?token=20609ddd01fe4faeb0ffe7d8d8c39881
    ]

     

    视图

    from django.shortcuts import render
    from rest_framework.views import APIView
    from rest_framework.response import Response
    from .models import UserInfo
    from utils.Auth import MyAuth
    import uuid
    
    # Create your views here.
    
    class UserView(APIView):
        def post(self, request):
            # 这相当于注册
            username = request.data["username"]
            UserInfo.objects.create(username=username, token=uuid.uuid4())
            return Response("ok")
    
    
    class TestAuthView(APIView):
        authentication_classes = [MyAuth,]
        # 这相当于登录的认证
        def get(self, request):
            print(request.user)
            print(request.auth)
            return Response("认证测试")
    

      

    自己写的认证类

    from rest_framework.authentication import BaseAuthentication
    from rest_framework.exceptions import AuthenticationFailed
    from AuthDemo.models import UserInfo
    from rest_framework.response import Response
    
    
    class MyAuth(BaseAuthentication):
        def authenticate(self, request):
            # 第一步先拿到前端传过来的token
            token = request.query_params["token"]
            # 验证token是否存在
            user_obj = UserInfo.objects.filter(token=token).first()
            if user_obj:
                return (user_obj, token)
            else:
                raise AuthenticationFailed("认证失败")
    

      

     

  • 相关阅读:
    Jedis API操作Redis数据库
    Go开发环境安装与环境变量配置
    Java中使用md5进行hash运算
    oracle创建表空间、用户
    CentOS安装MySQL
    Go语言之快速排序
    软件包管理rpm和yum
    第十一节:configParse模块
    redis数据库
    tcpdump命令
  • 原文地址:https://www.cnblogs.com/perfey/p/9959771.html
Copyright © 2020-2023  润新知