如何让Unanghenticated用户只能访问Django视图?

时间:2014-09-29 19:37:32

标签: django django-rest-framework django-authentication

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

我已成功构建了许多只能由经过身份验证的用户调用的API。我通过添加:permission_classes = [permissions.IsAuthenticated,]

完成了此操作

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

2 个答案:

答案 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())