本文主要是介绍DRF认证组件分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
DRF认证组件分析
在开发API过程中,有些功能需要登录才能访问,有些无需登录。drf中的认证组件主要就是用来实现此功能。
0 认证组件的三种返回值
-
认证成功,返回元组(user, auth)同时赋值给
request.user
和request.auth
即
request.user = user, request.auth = auth
-
认证失败,抛出异常,返回错误信息
-
返回None
注意,认证组件中,如果是使用了多个认证类,会按照顺序逐一执行其中的authenticate
方法:
- 无论认证成功还是失败,都会有返回值且不为None,就不会走下面的认证类
- 只有前一个返回值为None时,才会执行下一个认证类
- 若是所有的认证类的返回值都为None,此时
request.user
和request.auth
都为空,即匿名用户
如果想匿名用户也可以访问视图,可以在settings.py
中配置,有两种配置方法
-
设为None
-
除了可以定义为None,也可以定义为一个函数,
request.user
和request.auth
就分别对应两个函数的返回值
1 单视图应用
authentication_classes
是一个列表,可以同时应用多个认证组件
2 多视图应用
此时,就需要用到drf的全局配置**(认证组件的类不能放在视图view.py中,会因为导入APIView导致循环引用)。**
3 单视图多视图结合
在drf中,默认优先去全局中读取,再去视图类中读取。
我们可以将个别视图类的authentication_classes
列表置为空
4 源码分析
这篇关于DRF认证组件分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!