让我先给你看我的代码:
在settings.py
....
DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
....
我的my_view.py:
@api_view(['POST'])
@permission_classes((AllowAny,))
def say_hello(request):
return Response("hello")
如您所见,我默认使用 token 身份验证来保护我的其他 API,但是当我在 say_hello 中添加 token header 时,Django Rest Framework 将还要检查 token 是否有效,即使我添加了 AllowAny 权限类。
我的问题是如果 say_hello 中存在 token header ,如何让 Django Rest Framework 忽略检查 token ? 这样做有什么安全考虑吗?
谢谢。
请您参考如下方法:
您似乎混淆了身份验证和授权。
通过在您的 View 上使用 @permission_classes 装饰器,您已经覆盖了设置中的默认授权。但是您仍然拥有来自设置的默认身份验证类。
尝试在您的 View 中添加另一个装饰器,以绕过 TokenAuthentication:
@authentication_classes([])
请注意,如果您将它放在 POST 端点上,您的应用现在很容易受到诸如跨站点请求伪造之类的攻击。
