如何使未经身份验证的用户只能访问Django视图?

Saq*_*Ali 2 django django-authentication django-rest-framework

我通过扩展rest_framework.views.APIView类来构建Django API视图。

我已经成功构建了许多仅由经过身份验证的用户才能调用的API。我通过添加以下内容来完成此操作:permission_classes = [permissions.IsAuthenticated,]

有些API我只希望未经身份验证的用户调用。如“ ForgotPassword”。基本上,我想确保API调用程序不会在请求标头中发送JWT令牌。我该如何执行?没有permissions.IsUnAuthenticated

pah*_*hko 5

您可以轻松创建自己的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()
Run Code Online (Sandbox Code Playgroud)

然后: permission_classes = (myapp.permissions.IsNotAuthenticated,)

问候。