赞
踩
身份验证或身份识别本身通常不足以获取信息或代码的访问权限。因此,请求访问的实体必须具有授权
REST框架中的权限始终被定义为一个权限类的列表。
在运行视图的主体之前,检查列表中的每个权限。 如果任何权限检查失败,会抛出一个exceptions.PermissionDenied
或 exceptions.NotAuthenticated
异常,并且视图的主体将不会运行
当权限检查失败时,将返回"403 Forbidden"或"401 Unauthorized"响应,具体根据以下规则:
WWW-Authenticate
标头。— 将返回403 Forbidden响应。WWW-Authenticate
标头。— 将返回HTTP 401未经授权的响应,并附带适当的WWW-Authenticate
标头。全局配置(默认),在setting.py文件中配置
- REST_FRAMEWORK = {
- 'DEFAULT_PERMISSION_CLASSES': (
- 'rest_framework.permissions.IsAuthenticated',
- )
- }
如果未指定,则此设置默认为允许无限制访问
- 'DEFAULT_PERMISSION_CLASSES': (
- 'rest_framework.permissions.AllowAny',
- )
使用基于APIView
类的视图在每个视图或每个视图集的基础上设置身份验证策略。
- from rest_framework.permissions import IsAuthenticated
- from rest_framework.views import APIView
- class ExampleView(APIView):
- permission_classes = (IsAuthenticated,)
使用@api_view
装饰器装饰基于函数的视图
- from rest_framework.decorators import api_view, permission_classes
- from rest_framework.permissions import IsAuthenticated
- from rest_framework.response import Response
-
- @api_view(['GET'])
- @permission_classes((IsAuthenticated, ))
AllowAny
权限类将允许不受限制的访问,而不管该请求是否已通过身份验证或未经身份验证。IsAuthenticated
权限类将拒绝任何未经身份验证的用户的权限,并允许其他权限,注册用户访问user.is_staff
为True
,否则IsAdminUser
权限类将拒绝任何用户的权限,只能被部分受信任的管理员访问IsAuthenticatedOrReadOnly
将允许经过身份验证的用户执行任何请求,允许匿名用户读取权限,允许对已通过身份验证的用户进行写入权限.queryset
属性集的视图,只有在用户通过身份验证并分配了相关模型权限的情况下,才会被授予权限.queryset
属性或.get_queryset()
方法的视图。只有在用户通过身份验证并且具有相关的每个对象权限和相关的模型权限后,才会被授予权限。Django的标准对象权限框架相关联,该框架允许模型上的每个对象的权限,为了使用此权限类,你还需要添加支持对象级权限的权限后端,例如django-guardian。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。