Django可以通过使用第三方库 djangorestframework-jwt 实现JWT接口验证。

安装 djangorestframework-jwt

pip install djangorestframework-jwt

在Django的设置文件中添加以下内容:

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

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    ),
}

JWT_AUTH = {
    'JWT_ENCODE_HANDLER':
    'rest_framework_jwt.utils.jwt_encode_handler',

    'JWT_DECODE_HANDLER':
    'rest_framework_jwt.utils.jwt_decode_handler',

    'JWT_PAYLOAD_HANDLER':
    'rest_framework_jwt.utils.jwt_payload_handler',

    'JWT_PAYLOAD_GET_USER_ID_HANDLER':
    'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler',

    'JWT_RESPONSE_PAYLOAD_HANDLER':
    'rest_framework_jwt.utils.jwt_response_payload_handler',

    'JWT_SECRET_KEY': SECRET_KEY,
    'JWT_ALGORITHM': 'HS256',
    'JWT_VERIFY': True,
    'JWT_VERIFY_EXPIRATION': True,
    'JWT_LEEWAY': 0,
    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=7),
    'JWT_AUDIENCE': None,
    'JWT_ISSUER': None,

    'JWT_ALLOW_REFRESH': False,
    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=30),

    'JWT_AUTH_HEADER_PREFIX': 'Bearer',
    'JWT_AUTH_COOKIE': None,
}

在需要验证的API视图中添加 @jwt_auth 装饰器:

from rest_framework.decorators import api_view
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response

@api_view(['GET'])
@jwt_auth
def example_view(request):
    user = request.user
    return Response({'message': f'Hello, {user.username}!'}, status=200)

在请求中添加JWT Token:

Authorization: Bearer <JWT Token>

如果请求中提供了有效的JWT Token,则API视图将返回200 OK,否则将返回401 Unauthorized

django 实现jwt接口验证

原文地址: https://www.cveoy.top/t/topic/hrNB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录