Python 基于jwt实现认证机制流程解析

 更新时间:2020年06月22日 10:34:46   作者:jalen-tian  
这篇文章主要介绍了python 基于jwt实现认证机制流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.jwt的优缺点

jwt的优点:

1. 实现分布式的单点登陆非常方便

2. 数据实际保存在客户端,所以我们可以分担数据库或服务器的存储压力

jwt的缺点:

1. 数据保存在了客户端,我们服务端只认jwt,不识别客户端。
2. jwt可以设置过期时间,但是因为数据保存在了客户端,所以对于过期时间不好调整。

2.安装jwt

pip install djangorestframework-jwt -i https://pypi.douban.com/simple

3.在settings.dev中

REST_FRAMEWORK = {
  'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    'rest_framework.authentication.SessionAuthentication',
    'rest_framework.authentication.BasicAuthentication',
  ),
}
import datetime
JWT_AUTH = {
  'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1), ##设置token的有效值
}

4.手动生成jwt

from rest_framework_jwt.settings import api_settings
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER

payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)

5.后端实现登陆认证接口(在子应用路由urls.py中)

from rest_framework_jwt.views import obtain_jwt_token
urlpatterns = [
  path(r'login/', obtain_jwt_token),   ##提供接口
]

6.自定义返回数据,(user.utils.jwt_response_payload_handler路径下)

def jwt_response_payload_handler(token, user=None, request=None):
  """
  自定义jwt认证成功返回数据
  """
  return {
    'token': token,
    'id': user.id,
    'username': user.username
  }#这个是自定义jwt认证成功返回数据,一般会放在子应用下utils文件中,然后在settings中配置,将路径告诉django

7.修改settings.dev配置文件

# JWT
JWT_AUTH = {
  'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
  'JWT_RESPONSE_PAYLOAD_HANDLER': 'user.utils.jwt_response_payload_handler',
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python对称的二叉树多种思路实现方法

    Python对称的二叉树多种思路实现方法

    这篇文章主要介绍了Python对称的二叉树多种思路实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Python中函数的基本定义与调用及内置函数详解

    Python中函数的基本定义与调用及内置函数详解

    这篇文章主要给大家介绍了关于Python中函数的基本定义与调用及内置函数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Python处理字符串的常用函数实例总结

    Python处理字符串的常用函数实例总结

    在数据分析中,特别是文本分析中,字符处理需要耗费极大的精力,因而了解字符处理对于数据分析而言,也是一项很重要的能力,这篇文章主要给大家介绍了关于Python处理字符串的常用函数,需要的朋友可以参考下
    2021-11-11
  • python实现windows壁纸定期更换功能

    python实现windows壁纸定期更换功能

    这篇文章主要为大家详细介绍了python实现windows壁纸定期更换功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】

    Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】

    这篇文章主要介绍了Python统计一个字符串中每个字符出现了多少次的方法,涉及Python字符串转换及列表遍历、统计等相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • python障碍式期权定价公式

    python障碍式期权定价公式

    这篇文章主要为大家详细介绍了python障碍式期权定价公式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 浅谈Python项目的服务器部署

    浅谈Python项目的服务器部署

    这篇文章主要介绍了Python项目的服务器部署,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • pytorch中构建模型的3种方法详解

    pytorch中构建模型的3种方法详解

    这篇文章主要介绍了pytorch中构建模型的3种方法,分别是使用继承nn.Module基类构建自定义模型,使用nn.Sequential按层顺序构建模型或者,继承nn.Module基类构建模型并辅助应用模型容器进行封装(nn.Sequential,nn.ModuleList,nn.ModuleDict),需要的朋友可以参考下
    2023-09-09
  • 最强Python可视化绘图库Plotly详解用法

    最强Python可视化绘图库Plotly详解用法

    数据分析离不开数据可视化。Plotly 是一款用来做数据分析和可视化的在线平台,功能非常强大,可以在线绘制很多图形比如条形图、散点图、饼图、直方图等等
    2021-11-11
  • Python爬虫基于lxml解决数据编码乱码问题

    Python爬虫基于lxml解决数据编码乱码问题

    这篇文章主要介绍了Python爬虫基于lxml解决数据编码乱码问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论