1.  
  2. 主页
  3.  / 
  4. DRF实战教程
  5.  / 
  6. DRF实战之JWT认证

DRF实战之JWT认证

Django RESTFUL提供的认证

  • BasicAuthentication:此身份验证方案使用HTTP基本身份验证,根据用户的用户名和密码进行签名。基本身份验证通常仅适用于测试。
  • TokenAuthentication: 此身份验证方案使用基于令牌的简单HTTP身份验证方案。令牌认证适用于客户端 – 服务器设置,例如本机桌面和移动客户端。
  • SessionAuthentication: 此身份验证方案使用Django的默认会话后端进行身份验证。会话身份验证适用于与您的网站在同一会话上下文中运行的AJAX客户端。
  • RemoteUserAuthentication:此身份验证方案允许您将身份验证委派给Web服务器,该服务器设置REMOTE_USER 环境变量。

BasicAuthentication

DRF实战之JWT认证

Http Basic 是一种比较简单的身份认证方式。 在 Http header 中添加键值对 Authorization: Basic xxx (xxx 是 username:passowrd base64 值)。而Base64 的解码是非常方便的,如果不使用 Https ,相当于是帐号密码直接暴露在请求中。

TokenAuthentication

  • 配置
  • 路由
  • 传递方式
DRF实战之JWT认证

token值在分布式系统中会有问题产生,并且没有过期时间,一旦被窃取,任何人都可以使用

SessionAuthentication

DRF实战之JWT认证

自定义验证

  • 模型
  • 视图
  • 实现类
  • 自定义权限

JWT验证

使用django-rest-framework开发api并使用json web token进行身份验证,使用django-rest-framework-jwt这个库来帮助我们简单的使用jwt进行身份验证。

安装

注册

配置

路由

DRF实战之JWT认证

默认的返回值仅有token,通过修改该视图的返回值可以完成我们的需求。在应用中新建一个utils.py 文件:

DRF实战之JWT认证

我们可以将JWT保存在cookie中,也可以保存在浏览器的本地存储里,我们保存在浏览器本地存储中,下次使用的时候带上即可。

jwt的权限验证

DRF实战之JWT认证

JWT优缺点

优点

  • 无状态
  • 避免csrf
  • 适合移动端

缺点

  • 注销登录后Token时效问题

这篇文章对您有用吗?

我们要如何帮助您?

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注