首页 > 其他分享 >40.TokenAuthentication认证

40.TokenAuthentication认证

时间:2022-10-09 13:56:02浏览次数:66  
标签:authtoken 令牌 rest 认证 framework 40 信号 TokenAuthentication

TokenAuthentication认证介绍

  • TokenAuthentication是一种简单的基于令牌的HTTP认证
  • 适用于CS架构,例如普通的桌面应用程序或移动客户端
  TokenAuthentication认证使用
# 将rest_framework.authtoken 添加到 INSTALLED_APPS
INSTALLED_APPS = (
'rest_framework.authtoken',
)

# 配置认证类
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.TokenAuthentication',
    )
}
 
python manage.py migrate
'''
配置完成后需要运行迁移命令
rest_framework.authtoken实际是一个app或者说第三方模块,需要在数据库生成工作用的数据表
 
#为用户创建令牌
# 导包
from rest_framework.authtoken.models import Token
token = Token.objects.create(user='...')
print(token.key)
 
# 要进行身份验证的客户端,令牌密钥应包含在 authorization HTTP头部属性中
#键应该以字符串 "token" 作为前缀,用空格分隔两个字符串
# 示例
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
TokenAuthentication属性
#成功认证后 TokenAuthentication 提供下面的属性
request.user :设置为一个Django的 User 类的实例
request.auth :设置为一个 rest_framework.authtoken.models.Token 的实例

# 认证失败返回 HTTP 401 Unauthorized 响应,并携带下面的HTTP头部信息
WWW-Authenticate: Token
通过信号机制生成令牌
#信号机制
'''
Django 内置了许多信号,允许用户的代码获得特定操作的通知。
例如在 Model 保存前触发的信号 pre_save、在 Model 保存后触发的信号 post_save 等
Django 中的信号主要包含以下三个要素:
    发送者(sender):信号的发出方
    信号(signal):发送的信号本身
    接收者(receiver):信号的接收者
    
信号接收者其实就是一个简单的回调函数,将这个函数注册到信号上,当特定的事件发生时,发送者发送信号,回调函数被执行
Django 内置的信号,只需要定义回调函数并将它注册到信号上,这里的回调函数作为信号得接收者(receiver)。当程序执行到相应的操作时,自动触发信号,执行回调函数
'''
'''
如果希望每个用户都有一个自动生成的令牌
可以捕获用户的post_save信号
这个信号是Django原生提供的
'''
from django.conf import settings
from django.db.models.signals import post_save  # 信号
from django.dispatch import receiver  # 接收器
from rest_framework.authtoken.models import Token


# 绑定信号机制
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_Auth_token(sender, instance=None, created=False, **kwargs):
    # 如果创建用户
    if created:
        # 创建令牌
        Token.objects.create(user=instance)
获取令牌
'''
用户从客户端使用用户名和密码,往提供令牌服务的API发送表单或json数据
验证通过后,API将用户的令牌以json格式返回给客户端
DRF提供了一个内置的视图 obtain_auth_token 用于实现这一功能
  '''
  
from rest_framework.authtoken import views
urlpatterns += [
    path('api-token-auth/', views.obtain_auth_token),
]
 

标签:authtoken,令牌,rest,认证,framework,40,信号,TokenAuthentication
From: https://www.cnblogs.com/Mickey-7/p/16771867.html

相关文章

  • kafka使用SASL认证
    前提最近在使用运维团队给到的kafka集群时,需要使用sasl证人连接,这里记录一下将运维人员给的sasl证书文件client_truststore.jks放在项目resource文件夹下配置consumer@Confi......
  • Ceph使用---CephX认证机制及用户管理
    一、CephX认证机制介绍Ceph使用cephx协议对客户端进行身份认证cephx用于对ceph保存的数据进行认证访问和授权,用于对访问ceph的请求进行认证和授权检测,与mon通信的请求都要......
  • 39.BasicAuthentication认证
    BasicAuthentication认证介绍BasicAuthentication使用HTTP基本的认证机制通过用户名/密码的方式验证,通常用于测试工作,尽量不要线上使用用户名和密码必须在HTTP报文......
  • 38.认证系统
    认证身份验证是将传入的请求与一组鉴别凭据关联的机制,然后使用权限和限流策略来确定是否允许请求进入再权限和限流检查发生之前,以及在执行其他代码之前,实在在视图的最......
  • 月薪15k-40k| LINX ROBOT招聘视觉算法工程师等职位
    公司介绍:杭州灵西机器人智能科技有限公司(LINXROBOT),国家高新技术企业,成立于2017年。公司总部位于杭州,是一家国内领先的应用3D计算机视觉技术和机器人智能规划技术提供产业无......
  • MobaXterm注册认证版,亲测可用,操作简单(本机已安装python3环境)
    去github地址下下载代码  解压后在该目录下打开CMD执行MobaXterm-Keygen.py<UserName><Version>命令  生成的文件放在安装目录下,我的是免安装版,放在exe同目......
  • 2022-2023-1 20221406《计算机基础与程序设计》第六周学习总结
    2022-2023-120221406《计算机基础与程序设计》第六周学习总结班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP学习目标:Polya如何解决问题简单类型与......
  • drf自动生成路由、on_delete、登录认证
    目录回顾一、drf入门1.前后端开发模式2.API接口:前后端交互的媒介3.接口测试工具:postman4.restful规范十条5.drf快速入门6.必须继承APIView写视图类二、序列化组件1.功能三......
  • 自动生成路由、登录接口与登录认证
    路由自己写的路由path('books/',views.BookView.as_view({'get':'list','post':'create'})),path('admin/<int:pk>',views.BookView.as_view({'get':'retrieve',......
  • 【Django-rest-framework框架】第06回 路由、登录、认证
    目录1.自动生成路由1.1本质1.2使用步骤1.3SimpleRouter与DefaultRouter区别1.4自动生成的路由映射关系其实定死了1.5action装饰器的使用1.6action装饰器的使用1.7......