我正在通过扩展rest_framework.views.APIView
类来构建Django API视图。
我已成功构建了许多只能由经过身份验证的用户调用的API。我通过添加:permission_classes = [permissions.IsAuthenticated,]
有些API我只希望未经身份验证的用户调用。如“ForgotPassword”。基本上,我想确保API调用者不会在请求标头中发送JWT令牌。我该如何执行?没有permissions.IsUnAuthenticated
。
答案 0 :(得分:4)
您可以轻松创建自己的IsNotAuthenticated
班级
类似的东西:
from rest_framework.permissions import BasePermission
class IsNotAuthenticated(BasePermission):
"""
Allows access only to non authenticated users.
"""
def has_permission(self, request, view):
return not request.user.is_authenticated()
然后:permission_classes = (myapp.permissions.IsNotAuthenticated,)
问候。
答案 1 :(得分:0)
如果您使用的是基于功能的视图,那么使用以下内容会很好。
from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: not u.is_authenticated())