RESTFramework中Token身份验证的Python实例
发布时间:2023-12-24 13:14:01
在RESTful API的开发中,身份验证是一个非常重要的功能。Django REST Framework(DRF)是一个流行的Python框架,提供了一种使用Token进行身份验证的机制。Token身份验证机制通过生成一个Token令牌,并将其与用户关联,来验证用户的身份。
下面是一个使用DRF进行Token身份验证的Python示例。首先,需要安装Django和Django REST Framework:
pip install django pip install djangorestframework
接下来,创建一个新的Django项目:
django-admin startproject token_auth_demo cd token_auth_demo
然后,创建一个新的Django应用程序:
python manage.py startapp auth_api
在settings.py文件中,将DRF添加到已安装应用程序列表:
INSTALLED_APPS = [
...
'rest_framework',
'auth_api',
]
接下来,创建一个新的模型来存储用户:
# auth_api/models.py
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
pass
然后,创建一个新的序列化器用于序列化用户数据:
# auth_api/serializers.py
from rest_framework import serializers
from .models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'email']
接下来,创建一个API视图用于创建和查看用户:
# auth_api/views.py
from rest_framework import generics
from rest_framework.authtoken.models import Token
from .models import User
from .serializers import UserSerializer
class UserCreateView(generics.CreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
class UserListView(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
class UserDetailView(generics.RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
然后,配置URL路由以映射到视图:
# token_auth_demo/urls.py
from django.urls import path, include
from auth_api.views import UserCreateView, UserListView, UserDetailView
from rest_framework.authtoken.views import obtain_auth_token
urlpatterns = [
path('api/v1/', include([
path('users/', UserCreateView.as_view(), name='user-create'),
path('users/all/', UserListView.as_view(), name='user-list'),
path('users/detail/<int:pk>/', UserDetailView.as_view(), name='user-detail'),
path('token-auth/', obtain_auth_token, name='token-auth'),
])),
]
最后,运行Django开发服务器并进行测试:
python manage.py runserver
现在,可以使用POST请求来创建新的用户,以及使用GET请求来查看所有用户和单个用户的详细信息。例如,在终端中使用cURL进行测试:
首先,创建一个新用户:
curl -X POST -d "username=testuser&password=testpassword&email=testuser@example.com" http://localhost:8000/api/v1/users/
然后,使用Token进行身份验证,并获取Token令牌:
curl -X POST -d "username=testuser&password=testpassword" http://localhost:8000/api/v1/token-auth/
最后,使用Token令牌来获取用户列表和用户详细信息:
curl -H "Authorization: Token your_token" http://localhost:8000/api/v1/users/all/ curl -H "Authorization: Token your_token" http://localhost:8000/api/v1/users/detail/1/
以上是使用DRF进行Token身份验证的Python示例。通过这种机制,可以更安全地保护API端点,并确保只有授权用户才能访问受保护的资源。
