django 实现jwt接口验证
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
原文地址: https://www.cveoy.top/t/topic/hrNB 著作权归作者所有。请勿转载和采集!