赞
踩
要在 Django REST framework 中实现 API 认证和授权,您可以使用内置的身份验证和权限类。下面是如何配置基本的 token 认证和基于对象的权限的示例:
步骤 1:安装Django REST framework 确保您已经安装了 Django REST framework。如果没有,请按照以下命令安装:
pip install djangorestframework
Django2.1以下请按照以下步骤
步骤 2:安装django-rest-auth django-rest-auth 提供了简单易用的登录、登出、注册等认证功能。要安装它,请运行以下命令:
pip install django-rest-auth
步骤 3:将 'rest_framework' 和 'rest_framework.authtoken' 添加到 INSTALLED_APPS 在 my_django_project/settings.py
文件中,找到 INSTALLED_APPS
列表并添加 'rest_framework'
和 'rest_framework.authtoken'
:
- INSTALLED_APPS = [
- # ...
- 'rest_framework',
- 'rest_framework.authtoken',
- ]
步骤 4:配置Django REST framework 在 my_django_project/settings.py
中,配置 Django REST framework 的默认身份验证和权限。添加以下内容:
- REST_FRAMEWORK = {
- 'DEFAULT_AUTHENTICATION_CLASSES': [
- 'rest_framework.authentication.TokenAuthentication',
- ],
- 'DEFAULT_PERMISSION_CLASSES': [
- 'rest_framework.permissions.IsAuthenticated',
- ]
- }
步骤 5:将django-rest-auth添加到项目的URL配置中 在 my_django_project/urls.py
中,将 rest_framework.urls
和 rest_auth.urls
添加到 urlpatterns
- from django.contrib import admin
- from django.urls import path, include
-
- urlpatterns = [
- path('admin/', admin.site.urls),
- path('api/', include('myapp.urls')),
- path('api-auth/', include('rest_framework.urls')),
- path('rest-auth/', include('rest_auth.urls')),
- ]
步骤 6:应用数据库迁移
- python manage.py makemigrations
- python manage.py migrate
步骤 7:启动开发服务器
python manage.py runserver
现在您的 API 已配置为使用基于 token 的身份验证。默认情况下,您的 API 端点将需要身份验证,因为我们在步骤 4 中配置了 IsAuthenticated
权限。
您可以在 http://127.0.0.1:8000/rest-auth/login/
上访问登录端点,将用户名和密码作为 JSON 数据发送到此端点,将返回一个 token。使用此 token,您可以访问受保护的 API 端点。要将 token 添加到请求中,请在请求头中包含以下内容(将 your_token
替换为实际 token):
Authorization: Token your_token
根据您的需要,您还可以在视图层面覆盖默认的身份验证和权限类。您可以在 Django REST framework 文档 中了解有关身份验证和权限的更多信息。
Django2.1以上请按照以下步骤:
django-rest-auth
已不再维护,并与 Django 2.1 及更高版本不兼容。如果您使用的是 Django 2.1 及更高版本,建议使用替代方案,例如 dj-rest-auth
,它是基于 django-rest-auth
的一个分支,支持更新的 Django 版本。
安装 dj-rest-auth
请运行以下命令:
pip install dj-rest-auth
接下来,您需要在 Django 项目的 settings.py
文件中将 dj_rest_auth
添加到 INSTALLED_APPS
列表:
- INSTALLED_APPS = [
- # ...
- 'dj_rest_auth',
- # ...
- ]
然后,在项目的主 URL 配置文件(通常是 urls.py
)中,使用 include
函数将 dj_rest_auth
包的 URL 配置包含进来:
- from django.urls import path, include
-
- urlpatterns = [
- # ...
- path('auth/', include('dj_rest_auth.urls')),
- # ...
- ]
安装django-allauth
django-allauth
是一个集成了多种身份验证方法(如本地登录、社交登录等)的 Django 应用。在使用 dj-rest-auth
时,它依赖于 django-allauth
来处理一些身份验证和注册操作。
安装并配置 django-allauth
:
1.安装 django-allauth
:
使用 pip
安装 django-allauth
:
pip install django-allauth
2.将 allauth
和 allauth.account
添加到 INSTALLED_APPS
:
在项目的 settings.py
文件中,将 allauth
和 allauth.account
添加到 INSTALLED_APPS
列表:
- INSTALLED_APPS = [
- # ...
- 'allauth',
- 'allauth.account',
- # ...
- ]
3.配置身份验证后端:
在 settings.py
文件中,将 allauth.account.auth_backends.AuthenticationBackend
添加到 AUTHENTICATION_BACKENDS
列表:
- AUTHENTICATION_BACKENDS = (
- # ...
- 'allauth.account.auth_backends.AuthenticationBackend',
- # ...
- )
4.包含 allauth.urls
:
在主 URL 配置文件(通常是 urls.py
)中,使用 include
函数将 allauth.urls
包含进来:
- from django.urls import path, include
-
- urlpatterns = [
- # ...
- path('accounts/', include('allauth.urls')),
- # ...
- ]
现在,您已经成功安装并配置了 django-allauth
。请确保您已按照之前的说明正确配置了 dj-rest-auth
,以便可以正常地使用身份验证和注册功能。
利用 dj-rest-auth
验证 RESTful 身份
要利用 dj-rest-auth
验证 RESTful 身份,您需要首先确保已安装并配置了该库。接下来,您可以使用库提供的各种端点来处理用户身份验证、注册、密码重置等操作。以下是一些常见操作的示例:
用户注册:
要启用用户注册,请确保在项目的 settings.py
文件中将 dj_rest_auth.registration
添加到 INSTALLED_APPS
列表:
- INSTALLED_APPS = [
- # ...
- 'dj_rest_auth.registration',
- # ...
- ]
接着,在主 URL 配置文件(通常是 urls.py
)中,包含 dj_rest_auth.registration.urls
:
- from django.urls import path, include
-
- urlpatterns = [
- # ...
- path('auth/', include('dj_rest_auth.urls')),
- path('auth/registration/', include('dj_rest_auth.registration.urls')),
- # ...
- ]
现在,用户可以通过向 /auth/registration/
发送 POST
请求来注册。请求数据应包括 username
、email
和 password1
(密码)、password2
(确认密码)等字段。
用户登录:
用户可以通过向 /auth/login/
发送 POST
请求进行登录。请求数据应包括 username
和 password
字段。登录成功后,将返回一个 JSON Web Token(JWT)或其他认证令牌。
用户登出:
用户可以通过向 /auth/logout/
发送 POST
请求进行登出。这将使服务器端的会话过期,使得相关的认证令牌无效。
密码重置:
用户可以通过向 /auth/password/reset/
发送 POST
请求来请求密码重置。请求数据应包括 email
字段,用于接收密码重置链接。
密码重置确认:
用户可以通过向 /auth/password/reset/confirm/
发送 POST
请求来确认密码重置。请求数据应包括 uid
、token
、new_password1
(新密码)和 new_password2
(确认新密码)等字段。
在使用这些端点时,请确保每个需要身份验证的请求都包含了正确的认证令牌。对于使用 JWT 的项目,您需要在请求头中包含 Authorization
头,其值为 Bearer <token>
,其中 <token>
是 JWT 令牌。
除了上述端点之外,dj-rest-auth
还提供了其他用于处理用户信息更新、密码更改等操作的端点。请查阅库的文档了解详细信息:Welcome to dj-rest-auth’s documentation! — dj-rest-auth 3.0.0 documentation
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。