python+django+drf框架完成jwt登录认证接口
时间: 2023-12-15 19:04:49 浏览: 200
首先,需要安装 `djangorestframework` 和 `djangorestframework-jwt` 库:
```
pip install djangorestframework
pip install djangorestframework-jwt
```
然后在 Django 项目的 `settings.py` 文件中添加以下配置:
```python
INSTALLED_APPS = [
# ...
'rest_framework',
'rest_framework.authtoken',
'rest_framework_jwt',
# ...
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
),
}
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',
}
```
其中,`JWT_SECRET_KEY` 是一个随机字符串,用于加密生成 JWT token。
接下来,在 Django 项目的 `urls.py` 文件中添加以下代码:
```python
from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token, verify_jwt_token
urlpatterns = [
# ...
path('api-token-auth/', obtain_jwt_token),
path('api-token-refresh/', refresh_jwt_token),
path('api-token-verify/', verify_jwt_token),
# ...
]
```
这里添加了三个路由,用于获取、刷新、验证 JWT token。
最后,为需要登录认证的接口添加装饰器,例如:
```python
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def my_view(request):
content = {'message': 'Hello, World!'}
return Response(content)
```
这里使用了 `@permission_classes([IsAuthenticated])` 装饰器,表示只有通过 JWT token 认证的用户才能访问该接口。
至此,我们完成了 Django DRF 框架的 JWT 登录认证接口。
阅读全文