美文网首页
Framwork 权限

Framwork 权限

作者: 夜醉梦紅尘 | 来源:发表于2019-11-16 09:12 被阅读0次

    官方文档位置


    image.png

    关于权限的四个关键词
    AllowAny

    该AllowAny许可类将允许不受限制的访问,不管请求被认证或未认证的。
    此权限不是严格要求的,因为您可以通过将空列表或元组用于权限设置来获得相同的结果,但是您可以发现指定该类很有用,因为它使意图明确。

    IsAuthenticated

    该IsAuthenticated许可类将拒绝允许任何未认证用户,并允许许可,否则。
    如果您希望仅注册用户可以访问您的API,则此权限很合适。

    IsAdminUser

    所述IsAdminUser许可类将拒绝许可给任何用户,除非user.is_staff是True在这种情况下的许可将被允许。
    如果只希望一部分受信任的管理员可以访问您的API,则此权限很合适。

    IsAuthenticatedOrReadOnly

    在IsAuthenticatedOrReadOnly将允许被授权的用户进行任何请求。仅当请求方法是“安全”方法之一时,才允许对未授权用户的请求;GET,HEAD或OPTIONS。
    如果您希望您的API允许匿名用户具有读取权限,而只允许经过身份验证的用户具有写入权限,则此权限非常适合

    自定义权限

    DRF 运行我们自定义权限,可以实现更为灵活的权限校验。
    要实现自定义权限,需要继承 BasePermission 并实现以下方法之一或两者:
    .has_permission(self, request, view)
    .has_object_permission(self, request, view, obj) 只针对获取当对象有效
    比如,官方文档中的示例,可以实现只允许当前用户的拥有者修改指定的资源。

    from rest_framework.permissions import IsAuthenticated
    from rest_framework import permissions
    class IsOwnerOrReadOnly(permissions.BasePermission):
          message = 'Adding customers not allowed'  #自定义错误信息
          def has_object_permissions(self,request,view,obj):
     
                return obj.username == request.user.username  #返回布尔值
    
    

    api 的url中

    from rest_framework.routers import DefaultRouter
    router = DefaultRouter()
    router.register(r'user-all',drf_views.UsersViewSet)
    
    

    相关文章

      网友评论

          本文标题:Framwork 权限

          本文链接:https://www.haomeiwen.com/subject/ykrcvctx.html