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

Python编写的RESTFramework中Token用户认证实例

发布时间:2023-12-24 13:13:02

在Python中,可以使用Django REST Framework (DRF)来编写RESTful API,并使用Token认证来进行用户认证。

首先,我们需要安装DRF和Django的Token认证库。可以使用以下命令来安装它们:

pip install djangorestframework
pip install django-rest-framework-simplejwt

接下来,我们需要在Django的settings.py文件中进行相应的配置。我们需要添加以下行来启用DRF和Token认证:

INSTALLED_APPS = [
    ...
    'rest_framework',
    'rest_framework.authtoken',
]

...
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
}

现在,我们已经配置了DRF和Token认证。接下来,我们需要编写一个认证视图。

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated


class ExampleView(APIView):
    permission_classes = (IsAuthenticated,)

    def get(self, request):
        user = request.user
        content = {'message': f'Hello, {user.username}!'}
        return Response(content)

在上述示例中,我们定义了一个继承自APIView的ExampleView类。该类需要用户进行身份验证才能访问。在get方法中,我们检索请求中的用户,并返回一个包含用户信息的响应。

接下来,我们需要定义URL来访问ExampleView。在Django的urls.py文件中,可以添加以下行:

from django.urls import path
from myapp.views import ExampleView

urlpatterns = [
    ...
    path('example/', ExampleView.as_view(), name='example'),
]

现在,我们已经设置好了RESTFramework和Token用户认证。让我们来演示一下如何使用它。

首先,我们需要在Django中创建一个用户。可以使用以下命令来创建一个用户:

python manage.py createsuperuser

然后,可以使用curl或Postman等工具来进行请求。

使用curl进行请求示例:

curl -X GET http://localhost:8000/example/ -H "Authorization: Token <token>"

在上述示例中,我们使用GET方法来请求ExampleView的URL。我们将Token添加到Authorization头中。<token>应该替换为实际的Token值。

如果身份验证成功,将返回以下响应:

{
    "message": "Hello, <username>!"
}

<username>将被替换为用户的实际用户名。

这是一个简单的使用DRF和Token用户认证的例子。通过使用DRF和Token认证,我们可以轻松地为我们的RESTful API添加用户认证功能,保护我们的API不被未经授权的访问。