在Django rest框架中,从authentication(Guest Users)中跳过了一些视图



我设置了一个默认的身份验证类,因为我需要对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,)

相关内容

最新更新