Django可以通过第三方库django-rest-framework-jwt来实现JWT认证。

步骤如下:

  1. 安装django-rest-framework-jwt

可以通过pip来安装:

pip install djangorestframework-jwt
  1. 配置settings.py

在settings.py中添加以下配置:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        # 其他类
    ],
}

JWT_AUTH = {
    'JWT_SECRET_KEY': 'your-secret-key',  # 修改为自己的密钥
    'JWT_ALGORITHM': 'HS256',
    'JWT_ALLOW_REFRESH': True,
    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),
    'JWT_AUTH_HEADER_PREFIX': 'Bearer',
}
  1. 创建token

在视图函数中,可以通过以下代码来创建token:

from rest_framework_jwt.settings import api_settings
from rest_framework_jwt.views import ObtainJSONWebToken

jwt_response_payload_handler = api_settings.JWT_RESPONSE_PAYLOAD_HANDLER

class CustomObtainJSONWebToken(ObtainJSONWebToken):
    def post(self, request, *args, **kwargs):
        response = super().post(request, *args, **kwargs)
        token = response.data.get('token')
        user = request.user
        response.data = {
            'token': token,
            'user_id': user.id,
            'username': user.username,
            'email': user.email,
        }
        response.data.update(jwt_response_payload_handler(token, user))
        return response
  1. 使用token进行认证

在需要认证的视图函数中,可以通过以下代码来进行认证:

from rest_framework.decorators import authentication_classes, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework_jwt.authentication import JSONWebTokenAuthentication

@authentication_classes([JSONWebTokenAuthentication])
@permission_classes([IsAuthenticated])
def my_view(request):
    # 认证通过后的逻辑
    pass
``
django如何实现jwt

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

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