DRF框架之 用户角色权限与访问频率的权限设置
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框架之 用户角色权限与访问频率的权限设置的更多相关文章
- django Rest Framework----认证/访问权限控制/访问频率限制 执行流程 Authentication/Permissions/Throttling 源码分析
url: url(r'books/$',views.BookView.as_view({'get':'list','post':'create'})) 为例 当django启动的时候,会调用执行vie ...
- rest_framework组件之认证,权限,访问频率
共用的models from django.db import models # Create your models here. class User(models.Model): username ...
- Django REST framework 自定义(认证、权限、访问频率)组件
本篇随笔在 "Django REST framework 初识" 基础上扩展 一.认证组件 # models.py class Account(models.Model): &qu ...
- Linux ftp访问控制配置,包括访问ftp权限和访问ftp目录权限
在Linux 上建立用户为website1 home目录是/data/home/website1 但是用ftp登录以后,路径可以随便切换,并且可以进入别的站点下 进行增.删.改 本篇的目的是:在lin ...
- WordPress用户角色及其权限管理编辑插件:User Role Editor汉化版
如果Wordpress默认的用户角色及权限不能满足您的需求,又觉得修改代码编辑用户权限太麻烦.那不妨试试User Role Editor,Wordpress用户角色及其权限管理编辑插件. User R ...
- drf框架中jwt认证,以及自定义jwt认证
0909自我总结 drf框架中jwt 一.模块的安装 官方:http://getblimp.github.io/django-rest-framework-jwt/ 他是个第三方的开源项目 安装:pi ...
- RestFramework自定制之认证和权限、限制访问频率
认证和权限 所谓认证就是检测用户登陆与否,通常与权限对应使用.网站中都是通过用户登录后由该用户相应的角色认证以给予对应的权限. 权限是对用户对网站进行操作的限制,只有在拥有相应权限时才可对网站中某个功 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
- drf框架 - 三大认证组件 | 认证组件 | 权限组件 | 频率组件
RBAC 基于用户权限访问控制的认证 - Role-Based Access Control Django框架采用的是RBAC认证规则,RBAC认证规则通常会分为 三表规则.五表规则,Django采用 ...
随机推荐
- c语言题库---- 函数
---恢复内容开始--- 1.编写一个函数,功能为返回两个int类型参数的最大的值 #include <stdio.h>int FindMax( int a, int b); int ma ...
- jumpserver管理入门
比较规范一点的步骤 1.先在用户管理查看用户组里,添加用户组 2.在用户管理查看用户里,添加用户 3.在资产管理里查看资产,添加资产.在批量增加那里可以使用表格快速导入添加 4.在授权管理里的系统用户 ...
- Beginning Math and Physics For Game Programmers (Wendy Stahler 著)
Chapter 1. Points and Lines (已看) Chapter 2. Geometry Snippets (已看) Chapter 3. Trigonometry Snippets ...
- servlete基础
1. 使用servlet需要继承HttpServlet Servlet 生命周期 Servlet 生命周期可被定义为从创建直到毁灭的整个过程.以下是 Servlet 遵循的过程: Servlet 通 ...
- C#编程时应注意的性能处理
GC堆回收 那么除了通过new对象而达到代的阈(临界)值时,还有什么能够导致垃圾堆进行垃圾回收呢? 还可能windows报告内存不足.CLR卸载AppDomain.CLR关闭等其它特殊情况. 或者,我 ...
- 【备份】如何在 PADS Layout 中选择 Gerber 274X 格式
如何在 PADS Layout 中选择 Gerber 274X 格式. 起初原因是 JLC 说 274X 和 274D 的差别. 有小伙伴使用了 274D 的格式,结果做出来的 PCB 有问题.
- Django学习笔记之视图高级-类视图
类视图 在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图.使用类视图可以使用类的一些特性,比如继承等. View django.views.generic.base.View是主 ...
- Day 22 初识面向对象
一.两种编程思想 1.面向过程编程 核心是'过程',过程指的是解决问题的步骤,就是先干什么再干什么 基于面向过程思想编写程序相当于写一条流水线,是一种机械式的思维方式 优点:解决问题的思路清晰,可以把 ...
- Teamviewer远程控制
设置无人值守的固定密码,不使用随机码进行远程控制访问 设置好密码之后,以后只要通过Teamviewer生成的固定ID,再加上你设置的密码就可以随时进行远程访问了,而不需要使用生成的随机码.
- centos7远程安装oracle11g R2详细教程-解决一切问题
相关链接与资源: sqldevelper(各种操作系统的oracle客户端) http://www.oracle.com/technetwork/cn/developer-tools/sql-deve ...