django - 如何使 Django View 仅可供未经身份验证的用户访问?

标签 django django-rest-framework django-authentication

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

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

有一些 API 我只希望未经身份验证的用户调用。例如“忘记密码”。基本上,我想确保 API 调用者不会在请求 header 中发送 JWT token 。我怎样才能强制执行呢?没有permissions.IsUnAuthenticated

最佳答案

您可以轻松创建自己的 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,)

问候。

关于django - 如何使 Django View 仅可供未经身份验证的用户访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26107525/

相关文章:

python - django get_available_name() 得到了一个意外的关键字参数 'max_length'

python - Django 模型将外键设置为另一个模型的字段

python - 在使用 Django Rest Framework 保存之前根据 POST 数据更新模型字段

python - 使用 get() django 返回多个对象

django - Django 1.7版AppRegistryNotReady : Models aren't loaded yet

python - Django 条件聚合

python - 如何从 Django rest 框架的序列化程序中获取特定字段

python - 为什么Django无法加载Auth模块?

django - 如何设置 Django auth.login session 长度/年龄?

python - 如何确定给定自定义营业时间的事件的最近的前一个工作日?