欢迎访问宙启技术站
智能推送

rest_framework.settings中DEFAULT_AUTHENTICATION_CLASSES的默认认证类

发布时间:2023-12-19 01:16:28

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端点的访问。