码迷,mamicode.com
首页 > 其他好文 > 详细

Django Rest Framework 认证组件

时间:2020-02-21 19:47:53      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:str   mes   post   cat   head   frame   code   imp   失败   

技术图片
‘‘‘用户认证章节‘‘‘

# 用户认证章节:写一个数据接口
from django.http import JsonResponse
from .utils import get_token
from rest_framework.exceptions import APIException


class UserView(APIView):
    def post(self, request):
        # 定义返回消息体
        response = dict()
        # 定义需要的用户信息
        fields = {"username", "password"}
        # 定义一个用户信息字典
        user_info = dict()

        if fields.issubset(set(request.data.keys())):
            # username = request.data.get("username")
            # password = request.data.get("password")
            for key in fields:
                user_info[key] = request.data[key]

        user_instance = models.UserInfo.objects.filter(**user_info).first()

        if user_instance is not None:
            access_token = get_token.genertate_token()
            models.UserToken.objects.update_or_create(user=user_instance, defaults={
                token: access_token
            })

            response["status_code"] = 200
            response["status_message"] = "登录成功"
            response["access_token"] = access_token
            response["user_role"] = user_instance.get_usertype_id_display()
        else:
            response["status_code"] = 201
            response["status_message"] = "登录失败,用户名或密码错误"

        return JsonResponse(response)


# 定义一个认证类
class UserAuth():
    def authenticate_header(self):
        pass
    def authenticate(self, request):
        user_token = request.query_params.get("token")
        try:
            #获取token
            token = models.UserToken.objects.get(token=user_token)
            return token.user.username,token.token
        except Exception:
            raise APIException("没有认证")


from rest_framework.viewsets import ModelViewSet
class BookView(ModelViewSet):
    # 在需要认证的数据接口里面指定认证类
    authentication_classes = [UserAuth]
    queryset = models.Book.objects.all()
    serializer_class = BookSerizlizer
views.py
import uuid
#创建随机字符串用作token
def genertate_token():
    res = str(uuid.uuid4()).replace(-,‘‘)
    return res
    re_path(ruser/$,views.UserView.as_view()),

 

Django Rest Framework 认证组件

标签:str   mes   post   cat   head   frame   code   imp   失败   

原文地址:https://www.cnblogs.com/cou1d/p/12342689.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!