rest_framework.settings中DEFAULT_AUTHENTICATION_CLASSES的默认认证类
DEFAULT_AUTHENTICATION_CLASSES是Django Rest Framework中的一个配置项,用于指定默认的认证类列表,这些认证类将在所有视图中使用。
默认情况下,DEFAULT_AUTHENTICATION_CLASSES为空列表,即不使用任何认证类。当请求没有提供认证信息时,将返回未经授权的响应。
下面是一个使用DEFAULT_AUTHENTICATION_CLASSES的示例,其中包括Token认证和Session认证类:
INSTALLED_APPS = [
...
'rest_framework',
...
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
],
...
}
上述示例中,我们首先将'rest_framework'添加到INSTALLED_APPS中,然后在REST_FRAMEWORK配置中指定了DEFAULT_AUTHENTICATION_CLASSES为一个认证类列表。
在示例中,TokenAuthentication是一个用于通过Token认证的认证类,SessionAuthentication是一个用于通过会话认证的认证类。
TokenAuthentication是基于Token的认证方式。在使用TokenAuthentication时,用户需要提供一个Token,该Token通常在用户登录成功后由服务器返回给客户端。客户端在每个请求中将该Token放在请求头Authorization中,类似于:Authorization: Token <Token值>。服务器将从请求头中读取Token值,并根据该Token值进行认证。
SessionAuthentication是基于会话的认证方式。在使用SessionAuthentication时,当用户登录成功后,服务器会在响应中设置一个会话(session)cookie。客户端将在每个请求中发送该会话cookie,服务器将从请求中读取会话cookie,并根据该会话进行认证。
在配置了DEFAULT_AUTHENTICATION_CLASSES后,当视图类或视图函数需要进行认证时,Django Rest Framework会按顺序检查每个认证类,直到找到合适的认证类进行认证。如果某个认证类认证成功,则终止后续认证类的检查。
如果DEFAULT_AUTHENTICATION_CLASSES列表中的所有认证类都无法认证成功,则该请求将被视为未经授权的请求。
总结一下,DEFAULT_AUTHENTICATION_CLASSES配置项是Django Rest Framework中用于指定默认认证类的配置项。通过配置该项,可以指定一系列认证类,用于在所有视图中进行认证。在实际应用中,根据需求可以选择合适的认证类来保护API端点的访问。
