REST_FRAMEWORK重要组件--->authentication
1.认证(authenticate)
(1).对于某些API来说是需要做完访问认证才能查看网页内容的,比如说get请求带token认证字段。
(2).对于认证的流程来说,无论是认证、权限、节流、版本、
解析器还是其他的组件,入口都是self.dispatch()
(3).认证的流程为 请求进来->self.dispatch()>request=self.initialize_request(request,*args,kwargs)
->return Request() 返回一个Request对象,里面包括一个原生的request和self.get_Authenticators()方法get_Authenticators()方法是将一个authentication_Classes列表里面的对象进行实例化。首先找继承BaseAuthentication的视图函数是否有authenticate/authenticate_header这两个函数,如果没有,找父类的。其中authenticate回去挨个遍历authentication_classes列表中的认证,如果认证成功了,才会去执行dispatch中剩下来的getattr()去进行反射,去执行对相应method的操作,认证可以是单个,也可是多个,也可以为空。
(4).认证操作继承BaseAuthentication里面有authenticate和authenticate_header 两个函数必须要重写。其中authenticate(self,request)函数里面,获取url参数可以为request._request.Get.get(‘token’),authenticate_header(self,request)函数里面,可以省略,直接pass过。
(5).部分认证和全局认证: