django token
时间: 2023-07-11 16:42:58 浏览: 115
Django token 是一种用于认证和授权的机制。在 Django 中,我们可以使用 Django 自带的 TokenAuthentication 或者第三方库(如 DRF SimpleJWT)来实现 token 认证。TokenAuthentication 基于 Token,它是一种无状态的认证方式,客户端通过在 HTTP Header 中添加 Authorization: Token {token} 的方式传递 Token,服务端通过验证 Token 的有效性来确定用户身份和权限。在 Django 中,我们可以通过在 settings.py 中配置 REST_FRAMEWORK 的 DEFAULT_AUTHENTICATION_CLASSES 来启用 TokenAuthentication。
相关问题
django写token
在Django中,Token通常是指用于身份验证的一种机制,特别是用于API请求的身份验证,比如JWT(JSON Web Tokens)。JWT是一个包含用户信息的标准格式,服务器在响应给客户端成功认证后会生成一个Token,客户端需要在后续的所有API请求头中附带这个Token。
以下是使用Django Rest Framework (DRF)创建JWT Token的基本步骤:
1. 安装依赖:首先安装`djangorestframework-jwt`库:
```
pip install djangorestframework-jwt
```
2. 配置设置:在`settings.py`中添加JWT配置,如密钥、序列化器等:
```python
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
]
}
JWT_AUTH = {
'JWT_SECRET_KEY': 'your_secret_key', # 密钥
'JWT_GET_USER_ID_FROM_PAYLOAD': lambda payload: payload.get('user_id'),
'JWT_RESPONSE_PAYLOAD_HANDLER': jwt_response_payload_handler,
}
```
3. 创建序列化器:`jwt_response_payload_handler`函数允许自定义返回的Token数据结构,你可以创建一个JWTSerializer:
```python
from rest_framework_jwt.settings import api_settings
class MyTokenObtainPairSerializer(api_settings.JWT_TOKEN_SERIALIZER):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['username'] = instance.user.username
return ret
```
4. 视图函数:在视图中使用`obtain_pair()`方法来获取Token对:
```python
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework_jwt.utils import jwt_response_payload_handler
class ObtainAuthToken(APIView):
permission_classes = [AllowAny]
throttle_scope = 'login'
def post(self, request):
serializer = MyTokenObtainPairSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data['user']
token = serializer.object
response = jwt_response_payload_handler(token, user, request)
return Response(response)
```
Django Vue token
在Django和Vue中使用token进行身份验证的过程如下所示。首先,在Django的根目录的urls.py文件中,我们可以定义获取token和刷新token的路由,这需要引入TokenObtainPairView和TokenRefreshView视图。 其中,TokenObtainPairView用于验证用户并生成token,TokenRefreshView用于刷新token。
其次,在Django的userAuth模块下新建一个auth.py文件,我们可以自定义一个用户认证类,该类继承TokenAuthentication,并实现处理token过期的逻辑。 这个自定义的认证类可以用于验证请求中的token是否有效,如果过期则返回401错误。
然后,我们可以使用Postman进行测试,确保能够成功获取token和刷新token。在测试之前,请确保已经创建了用户,在Django中使用自带的用户体系进行用户创建。创建超级用户可以使用命令行输入"python3 manage.py createsuperuser"来创建。创建完毕后,用户数据信息会生成在用户数据表中。在settings.py文件中配置的AUTH_USER_MODEL = 'login.UserInfo'将会被用于用户信息的认证。在Postman中,我们可以发送一个POST请求,设置headers为"Content-Type: application/json",同时在request body中传递用户名和密码参数,参数名分别为"username"和"password"。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [Django+Vue,前后端分离,实现用户权限认证](https://blog.csdn.net/qq_33398946/article/details/109974998)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* [vue token过期 当前页数据丢失_Vue结合DjangoRestFramework实现登录认证(下)](https://blog.csdn.net/weixin_39633113/article/details/110259044)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文
相关推荐












