我设置了一个默认的身份验证类,因为我需要对apis
的大部分进行身份验证才能访问。但是,我需要login api
对所有用户都可用。我在django-rest-framework
中没有看到否定身份验证类。
如何让我的login api
对访客用户可用,同时不进行视图级authentication_classes
声明?
出现这个问题是因为我没有使用django的用户模型。如何为我的custom User model
(不是从django的用户模型继承的(创建AnonymousUser
实例,然后允许该用户与api交互?
编辑
Mark Galloway提醒我在permission_classes
中提到了同样的问题。
仅凭身份验证并不能阻止用户访问资源。身份验证和权限的组合是这方面的实际决定因素。例如,如果您的权限设置为"permissions.IsAuthenticatedOrReadyOnly",则无法进行身份验证(例如,没有有效令牌(的用户仍然可以访问检索和列出端点。
如何定义您的权限取决于您自己。对于我的大多数实现,我使用全局权限设置,但使用视图级别的AllowAny权限标记我的登录端点。此外,特定的视图级身份验证是覆盖全局身份验证设置的唯一方法。
例如:
class login(viewsets.GenericViewSet):
permission_classes = (permissions.AllowAny,)