zoukankan      html  css  js  c++  java
  • 认证组件

    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("认证失败")
    

      

     

  • 相关阅读:
    codeblocks基本调试方法—gdb—Debugger
    五大开源Web服务器
    【u237】分数化小数
    【u230】回文词
    【t099】最接近神的人
    【t052】冰岛
    【t069】奇怪的迷宫
    【p092】分数线划定
    【u243】拓扑排序
    【u247】生物进化
  • 原文地址:https://www.cnblogs.com/perfey/p/9959771.html
Copyright © 2011-2022 走看看