django如何实现jwt
Django可以通过第三方库django-rest-framework-jwt来实现JWT认证。
步骤如下:
- 安装
django-rest-framework-jwt库
可以通过pip来安装:
pip install djangorestframework-jwt
- 配置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',
}
- 创建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
- 使用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
``
原文地址: https://www.cveoy.top/t/topic/fgeX 著作权归作者所有。请勿转载和采集!