drf框架中认证与权限工作原理及设置
0909自我总结
drf框架中认证与权限工作原理及设置
一.概述
1.认证
工作原理
- 返回None => 游客
- 返回user,auth => 登录用户
- 抛出异常 => 非法用户
前台对于用户信息进行的判断
1)如果前台没有携带认证信息,直接定义为游客
2)如果前台携带了认证信息并认证通过,定位为登录用户,将登录的用户user对象保存在 requset.user 中
3)如果前台携带了认证信息但没有认证通过,一般都定义为游客
4 ) 可以自定义为非法用户,抛出 认证失败 异常,但是不建议直接操作
,可以交给权限组件进一步处理rest_framework.exceptions 的 AuthenticationFailed
参数
BasicAuthentication : 基本认证
SessionAuthentication : session认证
2.权限
工作原理
- 返回False => 没有权限,将信息返回给前台
- 返回True => 拥有权限,进行下一步认证(频率认证)
相关设置
- AllowAny:允许所有用户
- IsAuthenticated:只允许登录用户
- 必须request.user和request.user.is_authenticated都通过
- IsAuthenticatedOrReadOnly:游客只读,登录用户无限制
- get、option、head 请求无限制
- 前台请求必须校验 request.user和request.user.is_authenticated
- IsAdminUser:是否是后台用户
- 校验 request.user和request.user.is_staff is_staff(可以登录后台管理系统的用户)
二.局部设置
即在我们自定义的视图类开头
设置
# 认证 下面不一定是[],也可以()就是需要在数组当中,多个类用,隔开
# 局部取消认证组件:authentication_classes = []
# 区别启用认证组件:authentication_classes = [认证类们]
# 填写的参数BasicAuthentication,SessionAuthentication
# 权限
# 局部取消权限组件:permission_classes = []
# 区别启用权限组件:permission_classes = [权限类们]
# 填写的参数AllowAny
如
from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
class 类名(APIView):
authentication_classes = (SessionAuthentication, BasicAuthentication)
permission_classes = [IsAuthenticated,]
...........
三.全局设置
在setting
中设置
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
# django默认session校验:校验规则 游客 及 登录用户
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
# 'rest_framework.permissions.AllowAny',
# 全局配置:一站式网站(所有操作都需要登录后才能访问)
# 'rest_framework.permissions.IsAuthenticated',
],
}
四.失败返回的内容
- 401 Unauthorized 未认证
- 403 Permission Denied 权限被禁止
drf框架中认证与权限工作原理及设置的更多相关文章
- 分析facebook的AsyncDisplayKit框架中的Transaction的工作原理
在AsyncDisplayKit框架中有一个_ASAsyncTransaction模块,用于AsyncDiplayNode的异步事务,使用了dispatch_group实现. 主要目的是将operat ...
- drf框架中jwt认证,以及自定义jwt认证
0909自我总结 drf框架中jwt 一.模块的安装 官方:http://getblimp.github.io/django-rest-framework-jwt/ 他是个第三方的开源项目 安装:pi ...
- django drf框架中的user验证以及JWT拓展的介绍
登录注册是几乎所有网站都需要去做的接口,而说到登录,自然也就涉及到验证以及用户登录状态保存,最近用DRF在做的一个关于网上商城的项目中,引入了一个拓展DRF JWT,专门用于做验证和用户状态保存.这个 ...
- DRF框架之认证组件用法(第四天)
1. 什么是drf 框架的认证组件: auth 就等于是jango中的Auth模块,Auth是自带session信息,但是 drf的认证组件可以自定义token携带过去,去判断用的 2.如何实现认证呢 ...
- Spring框架中IoC(控制反转)的原理(转)
原文链接:Spring框架中IoC(控制反转)的原理 一.IoC的基础知识以及原理: 1.IoC理论的背景:在采用面向对象方法设计的软件系统中,底层实现都是由N个对象组成的,所有的对象通过彼此的合作, ...
- 【DRF框架】认证组件
DRF框架的认证组件 核心代码: self.perform_authentication(request) 框架自带模块: from rest_framework import a ...
- Java中的HashMap的工作原理是什么?
问答题23 /120 Java中的HashMap的工作原理是什么? 参考答案 Java中的HashMap是以键值对(key-value)的形式存储元素的.HashMap需要一个hash函数,它使用ha ...
- drf框架中所有视图及用法
0909自我总结 drf框架中所有视图及用法 一.drf框架中的所有视图类 from django.views import View from rest_framework import views ...
- drf框架中分页组件
drf框架中分页组件 普通分页(最常用) 自定制分页类 pagination.py from rest_framework.pagination import PageNumberPagination ...
随机推荐
- NOIP2009 1.多项式输出
题目: 其中,aixi称为 i 次项,ai 称为 i 次项的系数.给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式: 1. 多项式中自变量为 x,从左到右按照次数递减顺序给出多 ...
- 001:photoshop教程
1:添加辅助线:有个位移的坐标系图标:点击标志中,鼠标按着不动.之后拖动到对应的位置. 2:量距离:第一行.第二个图标.直接测量像素. 3:切割图片: 3.1:第三行.第一列:选择切片工具 3.2:之 ...
- 浅谈Task的用法
Task是用来实现多线程的类,在以前当版本中已经有了Thread及ThreadPool,为什么还要提出Task类呢,这是因为直接操作Thread及ThreadPool,向线程中传递参数,获取线程的返回 ...
- [VB.NET Tips]为VB.NET正名
前言 我于2005年毕业,正值全国上上下下如火如荼的开展企业信息化的时代,正是大规模软件开发的年代. 那时.NET 已经发布了2.0,但是仍是VB6,Delphi,PowerBuilder的天下,是E ...
- 搭建maven本地仓库,idea应用本地maven仓库
提环境: 安装好tomcat.maven.jdk.idea. 打开maven安装目录,在目录下新建 maven仓库文件夹(名子随便): 打开conf\setting.xml 加入<localRe ...
- XSS攻击-原理学习
本文优先发布于简书https://www.jianshu.com/p/04e0f8971890 1.百度百科XSS,跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样 ...
- 5分钟了解Prometheus
Prometheus(译:普罗米修斯)用领先的开源监控解决方案为你的指标和警报提供动力(赋能). 1. 概述 1.1. Prometheus是什么? Prometheus是一个开源的系统监控和警报 ...
- pycharm使用sublime/boxy配色方案
# 展示效果图 1. github官网连接:https://github.com/simoncos/pycharm-monokai 2.克隆代码并解压文件 3.PyCharm -> File - ...
- idea 设置jvm参数
使用IDEA进行JVM参数设置: Run->Edit Configurations... 进入之后: 之后就可以运行代码测试,可以看到控制台打印的信息: 说明: -Xms:20M 初始化堆内存大 ...
- wdcp 开启某个Mysql数据库远程访问
wdcp 开启某个Mysql数据库远程访问 登录wdcp后台-Mysql管理-phpmyadmin 输入Mysql的root密码登录进入 示例代码: update mysql.user set hos ...