📜  从请求 django 中获取令牌 - Python (1)

📅  最后修改于: 2023-12-03 15:06:38.752000             🧑  作者: Mango

从请求 Django 中获取令牌 - Python

Django提供了一种基于Token的身份验证,使得开发Web应用程序变得更加容易和安全。本文将介绍如何在Django中从请求中获取身份验证令牌。

步骤一:安装Django REST框架

首先,您需要安装Django REST框架。这可以通过使用pip来完成:

$ pip install djangorestframework
步骤二:添加REST框架到你的Django项目

下一步是将REST框架添加到你的Django项目。在你的项目的settings.py文件中,添加以下内容:

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

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

这个设置告诉Django为您的API使用Token身份验证。还有一种默认的权限设置允许只有已经通过身份验证的用户才能访问API端点。

步骤三:生成并分配Token

接下来,您需要为每个用户生成Token。您可以使用以下代码生成Token并将其分配给一个新的或已经存在的用户:

from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token

user = User.objects.get(username='用户名')
token = Token.objects.create(user=user)
print(token.key)

这个代码片段获取了一个名为“用户名”的用户,并为该用户创建一个新的Token。Token可以使用key属性访问。您应该将这个Token分配给相应的用户。

步骤四:从请求中获取Token

最后一步是从请求中获取Token。在需要访问受保护的API端点的视图函数中,可以使用以下代码从请求中提取Token:

from rest_framework.authentication import TokenAuthentication
from rest_framework.exceptions import AuthenticationFailed

class MyView(APIView):
    authentication_classes = [TokenAuthentication]

    def get(self, request):
        # verify the token
        try:
            user = request.user
        except AuthenticationFailed:
            return Response({'error': 'Invalid token'}, status=status.HTTP_401_UNAUTHORIZED)

        # use the authenticated user
        # ...

这个代码片段使用TokenAuthentication来验证从请求的HTTP头中接收到的Token。如果Token无效,它将返回HTTP错误代码401(未经授权)。

现在,您可以继续使用已登录并通过身份验证的用户来访问受保护的API端点。

这样,您就现在您的Django应用程序中实现了基于Token的身份验证。