django - Django rest 框架 + 简单 JWT - 始终启用权限类
问题描述
我在我的 rest API 中使用简单的 JWT进行身份验证。
在我的基于函数的视图中,我@permission_classes([IsAuthenticated])
用来定义访问该视图需要 JWT 令牌。
但是,我有一些不应该需要身份验证令牌的视图,因此我没有插入@permission_classes([IsAuthenticated])
,但是当我测试视图时它仍然需要令牌。
这是一个例子:
@api_view(['POST'])
def userCreate(request):
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(status=201)
return Response(serializer.errors, status=400)
当我尝试访问此视图时,服务器回复401并说:
{
"detail": "Authorization header must contain two space-delimited values",
"code": "bad_authorization_header"
}
在我的settings.py文件中,我设置了:
...
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10
}
解决方案
您可以在希望任何用户访问该视图的功能中使用 allow any
from rest_framework.permissions import AllowAny
@permission_classes([AllowAny])
推荐阅读
- django - Django REST Serializer 使用错误的模型进行序列化
- python - python文件写入程序运行时如何更新桌面上的文件大小
- javascript - 使用 d3.js 更新表数据
- c# - C#捕获从不在进程中的函数返回的异常?
- r - 如何设置仅在输入 3 时才显示集合向量的函数?
- javascript - 如果 URI 没有改变,例如在单页应用程序上,如何检测用户是否在新页面上?
- angular - Angular Kendo UI 全局访问
- php - 内连接循环通过
- git - 如何 git rebase 从另一个分支直接到 master 分支?
- javascript - 受控数字比例映射