权限类和身份验证类之间的Django REST差异
还有最后一件事我有点困惑,那就是权限类和身份验证类之间的差异 这是我的设置。py权限类和身份验证类之间的Django REST差异,django,django-rest-framework,Django,Django Rest Framework,还有最后一件事我有点困惑,那就是权限类和身份验证类之间的差异 这是我的设置。py REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAdminUser', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.TokenAuthentication', 'rest_fram
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAdminUser',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'PAGINATE_BY': 10
}
在我看来,我有以下…
class ProfileList(generics.ListCreateAPIView):
"""
API endpoint that represents a list of users.
"""
permission_classes = (permissions.IsAdminUser,)
model = Profile
serializer_class = ProfileSerializer
def pre_save(self, obj):
obj.owner = self.request.user
我假设上面提到的情况是,只有管理员用户可以访问browserable API,而拥有有效令牌的用户仍然可以获得json请求。然而,情况并非如此,只是IsAuthenticated似乎给了他们访问权限,但=这仍然允许我的用户在登录时访问在线版本
我希望所有拥有有效令牌的用户都能访问,但只有管理员用户才有权查看带有会话的在线API版本,这可能吗?
我希望所有拥有有效令牌的用户都能访问,但只有管理员用户才有权查看带有会话的在线API版本,这可能吗
值得注意的第一件事是,可浏览API不会给用户比只呈现JSON时更多的权限。这只是API端点的一个更好的视图。就我个人而言,我通常希望向最终开发人员公开可浏览API,因为它使根据API进行开发变得更容易
如果您真的想对除管理员用户以外的所有人隐藏它,您可以采取以下两种方法:
get\u renderers()
方法。(简要记录)
您可以检查self.request.user.is_staff,并且仅当它是管理员用户时才包括可浏览的API呈现程序.render()
。(例如,请参阅)您可以使用renderer\u context['request']
获取传入请求,如果不是管理员用户,只需将其呈现为标准JSON即可我认为其工作原理如中所述: 如果任何权限检查失败,将引发exceptions.PermissionDenied异常,并且视图的主体将不会运行 如果设置了
isadmin用户
,则该用户必须是管理员。否则,即使提供了DEFAULT\u AUTHENTICATION\u类
中所需的所有内容,他也没有权限