SessionAuthentication认证介绍
  • SessionAuthentication使用了Django默认的会话后端
  • 适合AJAX客户端等运行在同样会话上下文环境中的模式
  • 是DRF默认的认证方式之一
 
SessionAuthentication认证属性
#认证成功 SessionAuthentication 提供下面的属性
request.user :设置为一个Django的 User 类的实例
request.auth :设置为None
# 认证不成功将返回 HTTP 403 Forbidden 响应,没有额外的头部信息
'''
如果使用类似AJAX风格的API,并采用SessionAuthentication认证
当使用不安全的HTTP方法,比如 PUT , PATCH , POST 或者 DELETE,必须提供合法的CSRF令牌
DRF框架中的CSRF验证与标准Django的CSRF验证的工作方式略有不同
因为需要同时支持同一视图的会话和非会话身份验证
只有经过身份验证的请求才需要CSRF令牌,匿名请求可以在没有CSRF令牌的情况下发送
不适用于登录视图,登录视图应始终应用CSRF验证
'''
RemoteUserAuthentication认证
'''
使用Django的auth框架的认证功能
必须在AUTHENTICATION_BACKENDS 配置中使用django.contrib.auth.backends.RemoteUserBackend (或者继承它)
如果认证成功, RemoteUserAuthentication 提供下面的属性:
request.user :设置为一个Django的 User 类的实例
request.auth :设置为None
此认证一般使用不多
'''
 
自定义认证
# 导入用户模型
from django.contrib.auth.models import User
# 导入认证模块
from rest_framework import authentication
# 异常模块
from rest_framework import exceptions # 继承BaseAuthentication,实现BaseAuthentication两个待实现的方法
class UserAuthentication(authentication.BaseAuthentication): # 认证模块,返回None 或者user
def authenticate(self, request):
'''
从头部获取用户信息
头部自定义字段为MyUsername
Django会自动拼上HTTP_全大写英文
'''
username = request.MEATA.get('HTTP_MYUSERNAME')
# 没有用户信息返回None
if not username:
return None try:
# 去User查找对应用户信息
user = User.objects.get(username=username) except User.DoesNotExist:
# 如果找不到对应用户 抛出异常
raise exceptions.AuthenticationFailed('没有对应用户') # 找对对应用户 返回
return (user, None) # (request.user,request.auth)
 

41.SessionAuthenticatio和自定义认证的更多相关文章

  1. ocelot 自定义认证和授权

    ocelot 自定义认证和授权 Intro 最近又重新启动了网关项目,服务越来越多,每个服务都有一个地址,这无论是对于前端还是后端开发调试都是比较麻烦的,前端需要定义很多 baseUrl,而后端需要没 ...

  2. asp.net core 自定义认证方式--请求头认证

    asp.net core 自定义认证方式--请求头认证 Intro 最近开始真正的实践了一些网关的东西,最近写几篇文章分享一下我的实践以及遇到的问题. 本文主要介绍网关后面的服务如何进行认证. 解决思 ...

  3. 【Spring Security】六、自定义认证处理的过滤器

    这里接着上一章的自定义过滤器,这里主要的是配置自定义认证处理的过滤器,并加入到FilterChain的过程.在我们自己不在xml做特殊的配置情况下,security默认的做认证处理的过滤器为Usern ...

  4. springSecurity自定义认证配置

    上一篇讲了springSecurity的简单入门的小demo,认证用户是在xml中写死的.今天来说一下自定义认证,读取数据库来实现认证.当然,也是非常简单的,因为仅仅是读取数据库,权限是写死的,因为相 ...

  5. Laravel 认证原理及完全自定义认证

    Laravel 默认的 auth 功能已经是很全面了,但是我们也经常会碰到一些需要自定义的一些情况,比如验证的字段和默认的不匹配,比如需要能够同时满足 user name 和 email 认证等等.如 ...

  6. DRF JWT的用法 & Django的自定义认证类 & DRF 缓存

    JWT 相关信息可参考: https://www.jianshu.com/p/576dbf44b2ae DRF JWT 的使用方法: 1. 安装 DRF JWT # pip install djang ...

  7. 带入gRPC:对 RPC 方法做自定义认证

    带入gRPC:对 RPC 方法做自定义认证 原文地址:带入gRPC:对 RPC 方法做自定义认证项目地址:https://github.com/EDDYCJY/go... 前言 在前面的章节中,我们介 ...

  8. drf三大认证:认证组件-权限组件-权限六表-自定义认证组件的使用

    三大认证工作原理简介 认证.权限.频率 源码分析: from rest_framework.views import APIView 源码分析入口: 内部的三大认证方法封装: 三大组件的原理分析: 权 ...

  9. DRF认证、自定义认证和权限、自定义权限

    源码分析 """ 1)APIView的dispath(self, request, *args, **kwargs) 2)dispath方法内 self.initial( ...

随机推荐

  1. 我在Apache DolphinScheduler的心路历练

    摘要:Apache DolphinScheduler 目前是 Apache 孵化项目,目前正在快速发展中.加入Apache DolphinScheduler社区已一年多,已有 400+ 公司在生产上使 ...

  2. BZOJ3732 (Kruskal重构树)

    Kruskal重构树上\(x\)和\(v\)的\(lca\)的权值即为它们最长路最小值 #include <cstdio> #include <iostream> #inclu ...

  3. Redis 13 事务

    参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 概述 Redi ...

  4. identity4 系列————启航篇[二]

    前言 开始identity的介绍了. 正文 前文介绍了一些概念,如果概念不清的话,可以去前文查看. https://www.cnblogs.com/aoximin/p/13475444.html 对一 ...

  5. 你必须学UML之理论篇

    1.前言 对于当前社会背景下从事软件开发的工作者而言,"写代码"实际上并不是唯一的工作.特别在一些中小型的企业当中,这些企业往往对于开发者的要求,不单单停留在写代码完成相应功能上, ...

  6. CF914G Sum the Fibonacci (快速沃尔什变换FWT + 子集卷积)

    题面 题解 这是一道FWT和子集卷积的应用题. 我们先设 cnt[x] 表示 Si = x 的 i 的数量,那么 这里的Nab[x]指满足条件的 Sa|Sb=x.Sa&Sb=0 的(a,b)二 ...

  7. KingbaseES V8R6 集群环境wal日志清理

    案例说明: 1.对于集群中的wal日志,除了需要在备库执行recovery外,在集群主备切换(switchover或failover)时,sys_rewind都要读取wal日志,将数据库恢复到一致性状 ...

  8. Typora自动上传超级详细教程!!

    第一步检查环境变量 打开cmd 查看以下环境变量 需要软件: Typora PicGo gitee账号 配置node 配置git 第二步创建gitee仓库 设置仓库名直接创建,因为这里不能直接修改开源 ...

  9. Linux配置系统yum源

    首先是需要你把需要使用的镜像挂载到系统上面,可以通过cd /dvd添加也可以直接上传到系统上 本文档是上传到系统上进行挂载 操作系统:Red Hat 7.6 挂载镜像:Red Hat 7.6 1.挂载 ...

  10. 【设计模式】Java设计模式 - 享元模式

    Java设计模式 - 享元模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起记录分享自己 ...