服务端配置
安装第三方库
pip install djangorestframework-jwt
在settings.py中配置JWT
## 可以在这里配置全局的认证,也可以在视图中单独配置。
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
# 其他身份验证方法(可选)
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
# 其他权限(可选)
],
}
JWT_AUTH = {
'JWT_SECRET_KEY': 'your-secret-key',
'JWT_ALGORITHM': 'HS256',
'JWT_VERIFY': True,
'JWT_VERIFY_EXPIRATION': True,
'JWT_EXPIRATION_DELTA': datetime.timedelta(hours=1),
'JWT_ALLOW_REFRESH': True,
'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),
'JWT_AUTH_HEADER_PREFIX': 'JWT',
}
在urls.py中配置路由
from django.urls import path
urlpatterns = [
# ...
path(r"api-token-auth/", obtain_jwt_token, name="api-token-auth"),
]
客户端(Python)代码示例:
import requests
username = input("请输入用户名:")
password = input("请输入密码:")
response = requests.post(
'http://localhost:8000/api/token/',
data={'username': username, 'password': password}
)
response_data = response.json()
### 将JWT Token保存在客户端中,用于后续的请求
token = response_data['token']
headers = {'Authorization': f'JWT {token}'}
# 发送请求时带上JWT Token
response = requests.get(
'http://localhost:8000/api/test/',
headers=headers
)
response_data = response.json()