REST framework模块
【验证】
使用方法:
django的视图需要时CBV格式。
class MyAuthentication(object):
    def authenticate(self,request):
        token = request._request.GET.get(‘token‘)
        if not token:
            raise exceptions.AuthenticationFailed(‘用户认证失败‘)
        return (‘alex‘,None)
    def authenticate_header(self,val):
        pass
    
class DogView(APIView):
    authentication_classes = [MyAuthentication,] #源码中会将列表中的元素循环并类实例化,然后通过封装request,这个列表会在request中
    
    def get(self,request):
        return HttpResponse(‘get‘)
上面代码就是django rest framework的认证。
REST_FRAMEWORK = {
    "DEFAULT_AUTHENTICATION_CLASSES":[‘api.utils.auth.FirstAuthtication‘,‘api.utils.auth.Authtication‘ ],
   #"UNAUTHENTICATED_USER":lambda : "匿名用户",
    "UNAUTHENTICATED_USER":None,
    "UNAUTHENTICATED_TOKEN":None"
}
如上,列表中写了两个验证类的对象,这种全局配置不能再将验证类写到view.py中,需要单独创建一个配置文件,然后将类的路径写到settings中,如果在全局的情况下某个视图不想用认证(比如登陆),只需在视图类中添加
from rest_framework.authentication import BaseAuthentication
源码逻辑分析:

 
 
user方法通过porperty可以用点来调用,
 

具体的验证方法,一共三种返回值类型:
01有返回值,必须是元组(request.user,request.auth)
02验证失败抛出异常,然后执行self._not_authenticated
  
03返回None,当前认证不处理交给下一个认证处理。如果所有验证都没有返回值,执行self._not_authenticated
django提供默认匿名用户的request.user和request.auth
 
下面为匿名用户函数具体代码

验证成功执行具体的视图函数方法。
Django REST framework使用及源码分析之验证
原文:https://www.cnblogs.com/ArmoredTitan/p/8799129.html