要解决Django后端401未授权错误并与Postman集成,您可以按照以下步骤进行操作:
-
安装所需库和中间件:
- 安装Django:运行
pip install django
。 - 安装Django REST framework:运行
pip install djangorestframework
。 - 安装JWT库:运行
pip install djangorestframework-jwt
。
- 安装Django:运行
-
在项目的settings.py文件中进行配置:
- 添加
rest_framework
和rest_framework_jwt
到INSTALLED_APPS
中。 - 设置
REST_FRAMEWORK
的认证和权限类:REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', ), 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ), }
- 添加
-
生成JWT秘钥:
- 运行以下命令生成JWT密钥:
python manage.py generate_secret_key
- 运行以下命令生成JWT密钥:
-
在项目的settings.py文件中进行JWT配置:
- 将以下代码添加到
settings.py
文件的底部:import datetime JWT_AUTH = { 'JWT_SECRET_KEY': 'your_secret_key', # 使用上一步生成的密钥 'JWT_ALGORITHM': 'HS256', 'JWT_ALLOW_REFRESH': True, 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1), 'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7), }
- 将以下代码添加到
-
创建认证视图:
- 创建一个视图来处理用户认证,并返回JWT令牌。例如,您可以创建一个名为
ObtainAuthTokenView
的视图:from rest_framework_jwt.views import obtain_jwt_token class ObtainAuthTokenView(obtain_jwt_token): serializer_class = MyCustomAuthTokenSerializer # 自定义身份验证序列化器
- 创建一个视图来处理用户认证,并返回JWT令牌。例如,您可以创建一个名为
-
配置URL路由:
- 在项目的urls.py文件中配置URL路由以包含JWT认证视图:
from your_app.views import ObtainAuthTokenView urlpatterns = [ # ... url(r'^api-token-auth/', ObtainAuthTokenView.as_view()), # ... ]
- 在项目的urls.py文件中配置URL路由以包含JWT认证视图:
-
启动Django服务器并使用Postman进行测试:
- 启动Django开发服务器:运行
python manage.py runserver
。 - 使用Postman进行请求:
- 使用POST方法向
/api-token-auth/
发送用户名和密码以获取JWT令牌。 - 在POST请求的body中使用
x-www-form-urlencoded
格式,并提供username
和password
字段。 - 接收到响应后,将JWT令牌复制到Postman的请求头中的
Authorization
字段中,格式为JWT <token>
。 - 使用带有
Authorization
标头的其他请求进行测试,确保它们现在通过JWT进行授权。
- 使用POST方法向
- 启动Django开发服务器:运行
通过按照上述步骤设置Django和Postman,您应该能够解决Django后端401未授权错误,并通过Postman进行JWT身份验证。