1. 简单演示,创建一个models的数据库表

class User(models.Model):
name=models.CharField(max_length=32)
pwd=models.CharField(max_length=32)
choice=((1,'超级用户'),(2,'普通用户'),(3,'穷逼用户'))
type=models.IntegerField(choices=choice,null=True)
# typ=models.ForeignKey(to='Type') # class Type(models.Model):
# id=models.AutoField(primary_key=True)
# name=models.CharField() class UserToken(models.Model):
token = models.CharField(max_length=64)
user=models.OneToOneField(to='User')

2. 编写一个角色权限的方法

#权限类
from rest_framework.permissions import BasePermission
class MyPermissions(BasePermission):
# message='你是2b'
def has_permission(self,request,view):
#代表是超级用户
if request.user.type ==1:
#如何去除type对应的文字 get_字段名_display()
user_str=request.user.get_type_display()
print(user_str) #超级用户,校验通过,返回true,校验失败,返回false
return True
else: return False

3. 演示调用方法

from rest_framework.request import Request
from rest_framework.authentication import SessionAuthentication
# from app01.MyAuth import MyAuthetication
from app01.MyAuth import MyPermissions
from app01.MyAuth import MyThrottling
class BooksView(APIView):
# authentication_classes=[MyAuthetication]
# permission_classes=[MyPermissions]
permission_classes=[]
throttle_classes=[MyThrottling]
def get(self,request):
#request.user就是当前登录用户
print(request.user)
print(request.auth)
return Response('ok')

4. 如何全局使用呢?

# 认证的全局配置
REST_FRAMEWORK={
'DEFAULT_AUTHENTICATION_CLASSES':['app01.MyAuth.MyAuthetication',],
'DEFAULT_PERMISSION_CLASSES':['app01.MyAuth.MyPermissions',], }

5.如何局部使用呢?

from app01.MyAuth import MyPermissions

class BooksView(APIView):

    permission_classes=[MyPermissions]

    def get(self,request):
#request.user就是当前登录用户
print(request.user)
print(request.auth)
return Response('ok')

# 这样就是简单的局部使用了


drj框架之 访问频率类设置

    频率
频率是什么?
同一时间段内,只能访问多少次 频率的使用:
-写一个类:
from rest_framework.throttling import SimpleRateThrottle
class MyThrottling(SimpleRateThrottle):
scope='xxx'
#必须重写get_cache_key,返回什么,频率组件会以什么做限制(比如返回ip,它就以ip做限制,如果返回user_id,它会以用户id做限制)
def get_cache_key(self, request, view): return request.META.get('REMOTE_ADDR')

什么是频率,如何做设置

#drf给我们提供的频率控制类
from rest_framework.throttling import SimpleRateThrottle
class MyThrottling(SimpleRateThrottle):
scope='luffy'
def get_cache_key(self, request, view):
self.get_ident(request)
return request.META.get('REMOTE_ADDR') #注意: 这里的scope='luffy' 是按照项目名字来的,
# 认证的全局配置
REST_FRAMEWORK={
'DEFAULT_AUTHENTICATION_CLASSES':['app01.MyAuth.MyAuthetication',],
'DEFAULT_PERMISSION_CLASSES':['app01.MyAuth.MyPermissions',],
# 'DEFAULT_THROTTLE_CLASSES':['app01.MyAuth.MyThrottling'],
'DEFAULT_THROTTLE_RATES': {
'luffy': '10/day'
}
#注意 在做全局生效的时候 'luffy' : 必须和之前写的策略的scope = 'luffy' 要对应起来
#注意 '10/day' 这里可以自己定义, 一天访问10次,如果想要 一分钟访问6次 就是 '6/m'
}
from app01.MyAuth import MyPermissions
from app01.MyAuth import MyThrottling
class BooksView(APIView): throttle_classes=[MyThrottling] #局部使用

#注意: 在编写程序的时候访问频率还是很重要的,这样东西只要复制简单修改下就可以使用了!!!!

补充:
1 如果token信息放到请求头中,如何取?
# request._request.META
token=request.META.get('token')
2 django的GET,POST,META,body分别对应HTTP请求的哪部分?
-GET---->http请求路径中数据部分
-POST--->http请求以urlencode/formdata形式编码的body体部分
-META--->http请求头部信息
-body--->http请求请求体部分
-path,get_full_path(),FILES

DRF框架之 用户角色权限与访问频率的权限设置的更多相关文章

  1. django Rest Framework----认证/访问权限控制/访问频率限制 执行流程 Authentication/Permissions/Throttling 源码分析

    url: url(r'books/$',views.BookView.as_view({'get':'list','post':'create'})) 为例 当django启动的时候,会调用执行vie ...

  2. rest_framework组件之认证,权限,访问频率

    共用的models from django.db import models # Create your models here. class User(models.Model): username ...

  3. Django REST framework 自定义(认证、权限、访问频率)组件

    本篇随笔在 "Django REST framework 初识" 基础上扩展 一.认证组件 # models.py class Account(models.Model): &qu ...

  4. Linux ftp访问控制配置,包括访问ftp权限和访问ftp目录权限

    在Linux 上建立用户为website1 home目录是/data/home/website1 但是用ftp登录以后,路径可以随便切换,并且可以进入别的站点下 进行增.删.改 本篇的目的是:在lin ...

  5. WordPress用户角色及其权限管理编辑插件:User Role Editor汉化版

    如果Wordpress默认的用户角色及权限不能满足您的需求,又觉得修改代码编辑用户权限太麻烦.那不妨试试User Role Editor,Wordpress用户角色及其权限管理编辑插件. User R ...

  6. drf框架中jwt认证,以及自定义jwt认证

    0909自我总结 drf框架中jwt 一.模块的安装 官方:http://getblimp.github.io/django-rest-framework-jwt/ 他是个第三方的开源项目 安装:pi ...

  7. RestFramework自定制之认证和权限、限制访问频率

    认证和权限 所谓认证就是检测用户登陆与否,通常与权限对应使用.网站中都是通过用户登录后由该用户相应的角色认证以给予对应的权限. 权限是对用户对网站进行操作的限制,只有在拥有相应权限时才可对网站中某个功 ...

  8. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

  9. drf框架 - 三大认证组件 | 认证组件 | 权限组件 | 频率组件

    RBAC 基于用户权限访问控制的认证 - Role-Based Access Control Django框架采用的是RBAC认证规则,RBAC认证规则通常会分为 三表规则.五表规则,Django采用 ...

随机推荐

  1. java面试总躲不过的并发(一): 线程池ThreadPoolExecutor基础梳理

    本文核心:线程池ThreadPoolExecutor基础梳理 一.实现多线程的方式 1.继承Thread类,重写其run方法 2.实现Runnable接口,实现run方法 3.实现Callable接口 ...

  2. 《python for data analysis》第九章,数据聚合与分组运算

    # -*- coding:utf-8 -*-# <python for data analysis>第九章# 数据聚合与分组运算import pandas as pdimport nump ...

  3. Mysql基本代码操作

    Mysql的基本代码生成操作 创建一个数据库   (myschool是数据库名) create database myschool; 删除数据库 drop database myschool 创建一个 ...

  4. day05-数据类型与操作

  5. 在Vue组件中获取全局的点击事件

    // 定义全局点击函数 Vue.prototype.globalClick = function (callback) { document.getElementById('main').onclic ...

  6. 深入理解C#的装箱和拆箱(转)

    装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作.  1. 装箱在值类型向引用类型转换时发生 2. 拆箱在引用类型向值类型转换时发生 光上述两句话不难理解,但是往深处了解,就需要一些篇幅来解释了 ...

  7. excel怎么把单元格内某个字标红,其他字不变

    alt+F11,打开宏编辑器运行如下代码: Sub AAA() Dim R As Range, L As Long, S As String Application.ScreenUpdating = ...

  8. 工控随笔_15_西门子_WinCC的VBS脚本_05_变量类型之三_VBS数组

    数组是一种复杂数据类型,不但有数组本身的数据类型: 数组,还有数组元素中存储的数据的类型. 一.vbs中的数组类型 在VBS中提供了两种数组类型,一种是固定数组,一种是动态数组. 1.固定数组 就是在 ...

  9. LeetCode——295. Find Median from Data Stream

    一.题目链接: https://leetcode.com/problems/find-median-from-data-stream 二.题目大意: 给定一段数据流,要求求出数据流中的中位数,其中数据 ...

  10. POI 生成、导出Excel(包含多个sheet)带 图片

    1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ar ...