从Django-rest-framework中的authenticntcation(Guest Users)中删除一些视图

时间:2015-07-03 10:51:36

标签: django-rest-framework

我设置了一个默认的身份验证类,因为我需要大多数apis进行身份验证才能访问。但是,我需要login api可供所有用户使用。 我在django-rest-framework中没有看到否认身份验证类。

如何在不进行视图级login api声明的情况下让访客用户使用authentication_classes

出现此问题是因为我没有使用django的用户模型。如何为AnonymousUser创建custom User model实例(不是从django的用户模型继承),然后允许该用户与api进行交互?

修改

Mark Galloway提醒我在permission_classes提及同样的问题。

1 个答案:

答案 0 :(得分:0)

单独进行身份验证不会阻止用户访问资源。身份验证和权限的组合是实际的确定因素。例如,如果您的权限设置为'permissions.IsAuthenticatedOrReadyOnly',则无法进行身份验证的用户(例如/无有效令牌)仍然可以访问检索和列表端点。

您希望如何定义权限取决于您。对于我的大多数实现,我使用全局权限设置,但使用视图级AllowAny权限标记我的登录端点。此外,特定于视图级别的身份验证是覆盖全局身份验证设置的唯一方法。

例如:

class login(viewsets.GenericViewSet):
    permission_classes = (permissions.AllowAny,)