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 ...
随机推荐
- 单点登录(两种单点登录类型:SSO/CAS、相同一级域名的SSO)
单点登录:SSO(Single Sign On) 什么是单点登录:大白话就是多个网站共享一个用户名和密码的技术,对于普通用户来说,只需要登录其中任意一个网站,登录其他网站的时候就能够自动登陆,不需要再 ...
- Android-隐藏app图标以及隐式启动
隐藏APP桌面图标 <activity android:name=".LaunchActivity"> <intent-filter> <action ...
- .Ajax(async异步与sync同步)
异步,不会阻碍代码的执行,它会等待所有的同步代码执行完毕后,再执行输出自己的同步结果.(原生js中,只有定时器,DOM,ajax三个东西是异步的.) 同步,代码只会从上到下依次执行,只要一步出错,接下 ...
- .Net基础篇_学习笔记_第五天_流程控制while循环
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 泛型接口、JAVA API、包装类
泛型接口就是拥有一个或多个类型参数的接口 语法: public interface 接口名<类型形参>{ 方法名(类型形参 类型形参实例); } 示例: public interface ...
- 装逼手册之 python中的内存分配的小秘密
装逼手册之 python中的内存分配的小秘密 虽然我们现在得益于时代和技术的发展,不用再担心内存的问题:但是遥想当年,都是恨不得一个钢镚掰成俩份用,所以我就想深入了解一下,在python中内存分配的一 ...
- 关于spring boot多张表建立外健的讨论
现在有四张表:student(学生表).blogs(博客表).comment(评论表).reply(回复表) 现在说一下这四张表: student(学生表):学生的信息记录表 blogs(博客表):学 ...
- 睡梦中被拉起来执行Spring事务
梦中惊醒 在Tomcat的线程池里,有这样一个线程,自打出生后,从来不去干活儿,有好多次走出线程池“这座大山”去看世界的机会,都被他拱手让给了弟兄们. 弟兄们给他取了个名字叫二师兄.没错,好吃懒做,饱 ...
- JQuery对于动态生成的标签绑定事件失效
JQuery对整个html文档进行dom操作后,我们要想动态绑定事件,有两种方法 1.在进行dom操作时,在标签中写上onclick="afun()" 2.利用document的操 ...
- 前端面试题——html与css基础篇
整理一波html和css的面试题,侧重基础,希望明天面试能用到~(╥╯^╰╥) 一.HTML部分 1.浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层.表示层.行为层分别是:HTML.C ...