Django--权限Permissions的例子

权限全局配置:

REST_FRAMEWORK = {
  'DEFAULT_PERMISSION_CLASSES': (
    'rest_framework.permissions.IsAuthenticated',
  )
}

权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。

在执行视图的dispatch()方法前,会先进行视图访问权限的判断

在通过get_object()获取具体对象时,会进行对象访问权限的判断

如果不指定就用默认的配置:

'DEFAULT_PERMISSION_CLASSES': (
  'rest_framework.permissions.AllowAny',
)

自定义权限:

from rest_framework.permissions import BasePermission
class MyPermission(BasePermission):
  def has_object_permission(self, request, view, obj):
    """
      控制对obj对象的访问权限,吃案例决绝对所有用户的访问
      不能访问单一结果,但是可以访问列表结果
      has_object_permission是否可以访问数据对象, view表示当前视图, obj为数据对象
      .has_permission(self, request, view)是否可以访问视图, view表示当前视图对象
    """
    return False

我们使用之前写的视图类进行验证:

from rest_framework.permissions import IsAuthenticated
class BookInfoViewSet(mixins.ListModelMixin,mixins.RetrieveModelMixin,GenericViewSet):
  """使用GenericViewSet实现返回列表和单一值"""

  # 指定序列化器
  serializer_class = BookInfoSerializer
  # 制定查询集
  queryset = BookInfo.objects.all()
  # authentication_classes = [SessionAuthentication]
  # 登陆者的权限.是Admin还是普通用户 是admin可以访问还是普通用户可以访问
  permission_classes = [IsAuthenticated,MyPermission]

提供的权限

AllowAny 允许所有用户
IsAuthenticated 仅通过认证的用户
IsAdminUser 仅管理员用户
IsAuthenticatedOrReadOnly 认证的用户可以完全操作,否则只能get读取

以上这篇Django--权限Permissions的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Django用户认证系统 组与权限解析

    Django的权限系统很简单,它可以赋予users或groups中的users以权限. Django admin后台就使用了该权限系统,不过也可以用到你自己的代码中. User对象具有两个ManyToManyField字段,groups和user_permissions groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True, help_text=_('The groups this user bel

  • Django Rest framework之权限的实现示例

    一.权限实例 在阅读本文之前请先参考django rest framework 之 认证 中关于 django rest framework 的相关内容及实例 1.目录结构 为了更好的管理各个功能组件,在django rest framework 之 认证中我们说到可以将认证类单独的拿出来,放到其他目录下,然后导入到 views.py 文件中,在权限环节我们亦可以这么做,目录结构就变成这样 在api这个app下创建一个utils包专门用来存放相关的组件. 2.为模型类添加认证字段 我们在mode

  • Django权限机制实现代码详解

    本文研究的主要是Django权限机制的相关内容,具体如下. 1. Django权限机制概述 权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活:用好权限机制,能让系统更加强大和健壮.因此,基于Django的开发,理清Django权限机制是非常必要的. 1.1 Django的权限控制 Django用user, group和permission完成了权限机制,这个权限机制是将属于model的某个permission赋予user或group,可以理解为全局的权限,即如果用户A对数

  • 对Django中的权限和分组管理实例讲解

    权限 Django中内置了权限的功能.他的权限都是针对表或者说是模型级别的.比如对某个模型上的数据是否可以进行增删改查操作.他不能针对数据级别的,比如对某个表中的某条数据能否进行增删改查操作(如果要实现数据级别的,考虑使用django-guardian).创建完一个模型后,针对这个模型默认就有四种权限,分别是增/删/改/查.可以在执行完migrate命令后,查看数据库中的auth_permission表中的所有权限. 字段: content_type_id:是一个外键,参考表是django_co

  • django 通过url实现简单的权限控制的例子

    根据用户权限设定用户可以访问哪些页面,用django实现一个简单的demo. 1.models.py 文件 class level(models.Model): l_name = models.CharField(max_length=50,verbose_name="等级名称") l_permission = models.OneToOneField("permission") def __str__(self): return self.l_name class

  • Django 权限管理(permissions)与用户组(group)详解

    如果你只是利用Django开发个博客,大部分用户只是阅读你的文章而已,你可能根本用不到本节内容.但是如果你想开发一个内容管理系统,或用户管理系统,你必需对用户的权限进行管理和控制.Django自带的权限机制(permissions)与用户组(group)可以让我们很方便地对用户权限进行管理.小编我今天就尝试以浅显的语言来讲解下如何使用Django自带的权限管理机制. 什么是权限? 权限是能够约束用户行为和控制页面显示内容的一种机制.一个完整的权限应该包含3个要素: 用户,对象和权限,即什么用户对

  • Django--权限Permissions的例子

    权限全局配置: REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ) } 权限控制可以限制用户对于视图的访问和对于具体数据对象的访问. 在执行视图的dispatch()方法前,会先进行视图访问权限的判断 在通过get_object()获取具体对象时,会进行对象访问权限的判断 如果不指定就用默认的配置: 'DEFAULT_PERMISSION_CLASSE

  • Django权限设置及验证方式

    当创建一个Models, 在同步到数据库里,django默认设置了三个权限 ,就是 add, change, delete权限.但是往往有时候,根本不够用,此时我们可以自己写一个脚本,来进行权限的设置. 根据DJango官方文档解释,权限都是与models有关系的,此时.如果想设置一个view,对于有权限的用户进行放行,对于无权限的用户进行限制.那么我们就可以着手来写这个需求. 验证权限的方法一般有两种,一种是用@permission_required来进行验证,第二中是用user.has_pe

  • Django权限控制的使用

    自己搭建后台网站,需求:实现类似django Admin站点对每一张表的增删改查权限控制. 实现步骤: 1.权限控制Django框架已自带,共6张表,User表,Group表,UserGroup表,Permission表,GroupPermission表,UserPermission表,一般情况下,使用默认即可. 2.若User表自定义,需继承Django自带AbstractUser类,Group表同理. 3.创建类PermissionControl继承BasePermission,重写has_

  • django 连接数据库 sqlite的例子

    Aphorism the fight is worth it. django models 连接 sqlite 数据库 django 版本为 1.11.7 在 blog 项目下创建一个 app article :python manage.py startapp article 在 blog 项目结构下会多出一个 article 目录 在 article 下面的 models.py 文件中输入 from django.db import models class Article(models.M

  • Python Django实现layui风格+django分页功能的例子

    第一步:首先定义一个视图函数,用于提供数据,实现每页显示数据个数,返回每页请求数据 from django.shortcuts import render from django.core.paginator import Paginator # Django内置分页功能模块 def index(request): # 提供json数据 resp = {"id":10000,"username":"user-0","sex":

  • Django 权限认证(根据不同的用户,设置不同的显示和访问权限)

    示意图: html:(模态框等 html和js代码,参考:Django 创建/删除用户) {# 权限管理 #} <div id="permissionManageDiv" style="margin-left: 10px; display: none;"> <div> <h4 style="margin-top: 15px;">选择用户</h4> <hr style="margin-

随机推荐