django rest framework之基于token实现基本用户认证
class OrderView(APIView): ###订单相关业务### # 查看订单的所有信息 def get(self, request, *args, **kwargs): ret = {'code': 1000, 'msg': None, 'data': None} try: ret['data'] = ORDER_DICT except Exception as e: pass return JsonResponse(ret)

得到效果如上。
用实现token的认证可以通过django restframework的dispatch的函数进行方法的调用




用户认证所有代码如下:
from django.shortcuts import render, HttpResponse from django.http import JsonResponse from rest_framework.views import APIView from rest_framework.request import Request from rest_framework import exceptions #固定的异常写法 from rest_framework.authentication import BasicAuthentication #认证类里去找authenticate_header方法 from api import models # 用户认证 class Authtication(object): def authenticate(self, request): token = request._request.GET.get('token') token_obj = models.UserToken.objects.filter(token=token).first() if not token_obj: # token没给或者数据库查询不到,token提供错了 raise exceptions.AuthenticationFailed('用户认证失败') # 触发异常,AuthenticationFailed内部捕捉到这个错误 # 在rest framework内部会整个两个字段赋值给request,以供后续操作使用 return (token_obj.user, token_obj) # 返回两个元组 def authenticate_header(self, request): pass class OrderView(APIView): ###订单相关业务### authentication_classes = [Authtication, ] # 在类里应用上认证规则token # 先认证后才能查看订单的所有信息 def get(self, request, *args, **kwargs): # request.user # request.auth # 验证是否登入成功,直接看返回的token,如果没有带token说明以前没有登入过 # token = request._request.Get.get('token') # if not token: # return HttpResponse('用户未登入') # self.dispatch() ret = {'code': 1000, 'msg': None, 'data': None} try: ret['data'] = ORDER_DICT except Exception as e: pass return JsonResponse(ret) class UserInfoView(APIView): authentication_classes = [Authtication, ] # 在类里应用上认证规则token,即应用类 # 认证后才能查看用户信息 def get(self, request, *args, **kwargs): return HttpResponse('用户信息')
注意:
浙公网安备 33010602011771号