djangorestframework-simplejwt
时间: 2023-04-16 08:01:23 浏览: 140
Django REST framework-simplejwt 是一个用于Django和Django REST framework的简单JSON Web Token(JWT)身份验证库。它提供了简单的视图和路由来处理身份验证和认证,并且可以轻松集成到现有的Django应用中。
相关问题
pip install djangorestframework-simplejwt
使用pip install djangorestframework-simplejwt 可以安装 Django REST framework 的一个扩展——Simple JWT。Simple JWT 是一个基于 JSON Web Tokens(JWT)的身份验证方案,它简化了在 Django REST framework 中实现基于 Token 的认证和权限控制。
安装这个库可以通过命令行使用pip工具进行操作,首先需要确认已经安装了Python和pip工具,然后在命令行输入指令"pip install djangorestframework-simplejwt"即可开始安装。
安装完成后,在Django项目的settings.py文件中,需要将Simple JWT添加到INSTALLED_APPS中,然后配置相应的认证后端和中间件即可开始使用。
Simple JWT提供了简单而强大的身份验证功能,可以轻松地生成和验证JWT,支持自定义有效期、刷新令牌、验证用户权限等功能。它还提供了许多定制化的选项,以便开发者可以根据自己的需求进行个性化配置。
总之,pip install djangorestframework-simplejwt 是安装 Django REST framework 的一个重要步骤,可以为开发者提供方便快捷的JWT身份验证功能,有利于开发安全可靠的web应用程序。
用djangorestframework编写一个jwt案例
好的,这是一个基于 Django 和 Django REST framework 的 JWT 认证的示例。首先需要安装 `djangorestframework-simplejwt` 包。
安装命令:
```
pip install djangorestframework-simplejwt
```
安装完成后,在 `settings.py` 中添加以下配置:
```python
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
}
```
接下来,创建一个获取 JWT Token 的视图:
```python
from rest_framework_simplejwt.views import TokenObtainPairView
class ObtainTokenPairView(TokenObtainPairView):
serializer_class = MyTokenObtainPairSerializer
```
这里我们自定义了一个 `MyTokenObtainPairSerializer`,用于在 JWT Token 中添加一些自定义的信息。该类继承自 `TokenObtainPairSerializer`。
```python
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
@classmethod
def get_token(cls, user):
token = super().get_token(user)
# Add custom claims
token['username'] = user.username
token['email'] = user.email
return token
```
在 `urls.py` 中添加路由:
```python
from django.urls import path
from .views import ObtainTokenPairView
urlpatterns = [
path('api/token/', ObtainTokenPairView.as_view(), name='token_obtain_pair'),
]
```
现在,我们就可以通过访问 `/api/token/` 接口来获取 JWT Token 了。该接口接收 `username` 和 `password` 两个参数。
接收到 Token 后,我们可以在请求头中添加 `Authorization` 字段,将 Token 作为值传递给服务端。服务端会通过 JWT 认证,根据 Token 中的信息来识别用户身份。例如:
```
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsImV4cCI6MTYzNzQ1MDE0OCwianRpIjoiNzRkNGI5MDItMzYzZS00MGYzLWJjMDQtMjQxZTJlNTFkZDZiIn0.64cJZuVzRq_V3f3cddtb3K4JjjxZ1a3sPvzv8R0fP8g
```
服务端可以通过如下代码读取 Token 中的信息:
```python
from rest_framework_simplejwt.authentication import JWTAuthentication
class MyView(APIView):
authentication_classes = [JWTAuthentication]
def get(self, request):
user = request.user
# access user info from user variable
```