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